电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java關鍵字static的使用詳解

瀏覽:14日期:2022-08-27 14:54:18
關鍵字 static1. 概述 static 是一種修飾符 static 是Java中表靜態的關鍵字 它可以修飾成員變量、成員方法、代碼塊 被static修飾的成員變量或成員方法,將不再依賴于對象的創建而去使用,而是依賴類的存在,成為類成員或類方法,是共享的(下面將會詳細的解釋)。2. static修飾成員變量2.1 常見的修飾符 public 修飾符 private 修飾符 沒有修飾符 static 修飾符(靜態修飾符)

class Test {// public 修飾符public int a;// private 修飾符private int b;// 沒有修飾符int c;// static 修飾符public static int d;}2.2 內存圖分析講解static修飾成員變量

class Test {public int a;public String b;public double c;public static int d;}Test t = new Test();

以上述簡單的測試類為例,畫其底層的內存圖(下圖是我自己手畫的圖,天生手殘,請大家多擔待😂):

java關鍵字static的使用詳解

以上就是很簡單的Java實例化對象從創建內存到給成員變量開辟內存空間,并默認初始化的底層內存圖,我來解釋以下上面的圖:

在棧中開辟一塊內存,以main標識的內存空間,為main方法的函數幀。 在main函數幀標識的內存中,開辟一塊以t標識(實例化對象的名字)的局部變量內存,其中存放的是地址值(或稱引用值),指向堆空間中保存成員變量內存的首地址。 堆空間開辟一塊內存,用來存放成員變量,其開辟內存的個數于其成員變量的個數有關,以次Test為例,非static修飾的變量有3個,變在其中開辟三塊內存空間,用來存放著三個變量,順序為類中定義變量的順序。將該內存地址的首地址賦給棧中t標識的那塊內存。 因為成員變量在堆中開辟的內存,堆的機制,存在默認初始化,所以對成員變量賦予默認初始化的值,int,double,屬于基本數據類型,所以直接將其默認值0,0.0寫入對應的內存當中;成員變量c為字符型,為引用數據類型,所以其內存中存放的是地址值,指向堆中的另一塊空間,并賦予默認值null,完成成員變量的初始化。 從圖中可以很明顯的看出,存放d,用static修飾的成員變量,其內存的開辟不在堆內存中開辟,而是在方法區中的靜態區開辟(可以理解靜態區就在方法區當中)。 靜態區隨類的加載而開辟,且其中的存放的靜態成員變量是共享的,且僅有次一塊內存。2.3 static修飾的成員變量的特點 static修飾的成員變量不再是普通的成員變量,而是類成員變量 其隨著類的加載而加載,隨著類的加載而開辟內存,不依賴于對象的存在 其內存在靜態區存放 被類的所有對象所共享2.4 簡單的代碼解釋并說明如何使用

class Test {public int a = 10;public static int b = 20;}// 類已經加載,并沒有實例化,此時靜態區已經開辟,可以調用使用靜態變量,并不依賴于對象存在,而是依賴于類的存在,使用時,直接類名.變量名,即可。syso(Test.b); // 輸出 20// 實例化對象,此時才在堆空間中開辟一系列的內存,上述原理中已經闡述,此時才可以調用a的值。Test t = new Test();syso(t.a); // 輸出 10// 當然也可調用 b 的值syso(t.b); // 輸出 203. static修飾成員方法3.1 為什么使用static去修飾成員方法

用static修飾的成員變量是靜態變量,也稱類變量,它是隨著類的加載而加載的,地址內存在靜態區,不再依賴對象而存在。但是如何手動改變或設置或調用它的值呢,即操作static數據成員?

可以默認初始化,即開辟內存空間的時候,底層自動賦予它類型默認的初始值。 顯示初始化。即在定義其的時候,給它一個值。

public static int a = 10;

但是如何手動的給它賦予值并且調用呢,這就引入了用static修飾的成員方法,類方法。

2.2 static修飾的成員方法的特點 不再是普通的成員方法,而是類方法,隨著類的加載而加載,不再依賴于對象,而是依賴于類。因 為不再依賴于對象的存在,所以就和對象毫無關系,所以在類方法中不存在 this 引用(this表當前對象,隨著對象的創建而加載),所以就不能調用非靜態的成員變量和函數。 只能訪問靜態成員和靜態的成員方法 類比對象優先 靜態只能訪問靜態2.3 簡單的代碼解釋并說明如何使用

class Test {// 一般的類中的成員變量都是私有的private static String lib;// static 只能訪問靜態成員 和 靜態方法public static String getLib() {// 普通數據成員,依賴對象// 不依賴對象// 不存在 this.lib; 不存在 this 引用return lib;} // 局部變量public static void setLib(String lib) {// 通過類名.static成員 解決同名的問題School.lib = lib;//static 不可以調用其它 非 static 的成員方法}}// 在使用的時候,直接 類名.方法名 即可// 如果要使用類,必須先把 .class 文件裝入內存 當裝入內存后,類立馬開辟內存在方法區,形成類的對象// 類成員 調用方法// 類名 .成員名School.setLib('1');System.out.println('lib: ' + School.getLib());3. static修飾代碼塊3.1 概述靜態代碼塊

在Java中的代碼塊,有局部代碼塊,構造代碼塊,靜態代碼塊,三者執行順序,作用,會單獨出一篇博文來簡單說明。所謂靜態代碼塊就是用static修飾的代碼塊。

class Test {// 靜態代碼塊static {syso(...);}} 靜態代碼塊,隨著類的加載而加載,指執行一次,且優于主函數的執行,即在main函數入口之前就執行。 靜態代碼塊是由類調用的,在主函數之前就執行。 作用:對類和靜態變量進行一系列的初始化 靜態代碼塊中的變量是局部變量,與普通函數中的局部變量性質沒有區別。 可以由多個靜態代碼塊3.2 代碼解釋

輸出:

java關鍵字static的使用詳解

可以明顯的看出,當類加載還未執行main函數的時候,主類中的static已經執行,之后執行main函數,從上至下順序執行,當類進行實例化的時候,同樣也是現執行類中的static代碼塊,再執行構造器中的代碼塊

4. 總結static關鍵字static

1.靜態方法 | 靜態成員變量:類中的方法 | 成員變量,加上static修飾,就成了靜態成員方法(類方法) | 靜態成員變量(類變量)2.static成員方法和普通成員方法的本質區別在于沒有this指針static成員方法只能引用類中的靜態成員(屬性、方法)static成員方法不能引用類中的非靜態成員3.類變量和類方法,都是隨著類的加載而加載的,依賴于類,優于對象的,使用的時候 類名.變量名(方法名),被類的所有對象而共享的4.普通成員方法既可以引用static成員,也可以普通成員5.可以通過類名調用static成員方法,也可以通過對象名調用6.static方法之所以存在,就是為了操作static數據成員

到此這篇關于java關鍵字static的使用詳解的文章就介紹到這了,更多相關java關鍵字static內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 全自动包装秤_全自动上袋机_全自动套袋机_高位码垛机_全自动包装码垛系统生产线-三维汉界机器(山东)股份有限公司 | 高低温试验箱-模拟高低温试验箱订制-北京普桑达仪器科技有限公司【官网】 | 辐射仪|辐射检测仪|辐射巡测仪|个人剂量报警仪|表面污染检测仪|辐射报警仪|辐射防护网 | 土壤水分自动监测站-SM150便携式土壤水分仪-铭奥仪器 | 高压无油空压机_无油水润滑空压机_水润滑无油螺杆空压机_无油空压机厂家-科普柯超滤(广东)节能科技有限公司 | 户外-组合-幼儿园-不锈钢-儿童-滑滑梯-床-玩具-淘气堡-厂家-价格 | 包装机_厂家_价格-山东包装机有限公司| 汽车水泵_汽车水泵厂家-瑞安市骏迪汽车配件有限公司 | AGV无人叉车_激光叉车AGV_仓储AGV小车_AGV无人搬运车-南昌IKV机器人有限公司[官网] | 东莞动力锂电池保护板_BMS智能软件保护板_锂电池主动均衡保护板-东莞市倡芯电子科技有限公司 | 校园气象站_超声波气象站_农业气象站_雨量监测站_风途科技 | Brotu | 关注AI,Web3.0,VR/AR,GPT,元宇宙区块链数字产业 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 许昌奥仕达自动化设备有限公司| 阻垢剂,反渗透阻垢剂,缓蚀阻垢剂-山东普尼奥水处理科技有限公司 真空粉体取样阀,电动楔式闸阀,电动针型阀-耐苛尔(上海)自动化仪表有限公司 | 山东成考网-山东成人高考网| 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 转向助力泵/水泵/发电机皮带轮生产厂家-锦州华一精工有限公司 | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 广州活动策划公司-15+年专业大型公关活动策划执行管理经验-睿阳广告 | 电销卡 防封电销卡 不封号电销卡 电话销售卡 白名单电销卡 电销系统 外呼系统 | 茶楼装修设计_茶馆室内设计效果图_云臻轩茶楼装饰公司 | 健身器材-健身器材厂家专卖-上海七诚健身器材有限公司 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 南京泽朗生物科技有限公司-液体饮料代加工_果汁饮料代加工_固体饮料代加工 | 整车VOC采样环境舱-甲醛VOC预处理舱-多舱法VOC检测环境仓-上海科绿特科技仪器有限公司 | 航空连接器,航空插头,航空插座,航空接插件,航插_深圳鸿万科 | 臭氧老化试验箱,高低温试验箱,恒温恒湿试验箱,防水试验设备-苏州亚诺天下仪器有限公司 | 变压器配件,变压器吸湿器,武强县吉口变压器配件有限公司 | 齿辊分级破碎机,高低压压球机,立式双动力磨粉机-郑州长城冶金设备有限公司 | 欧景装饰设计工程有限公司-无锡欧景装饰官网 | 999范文网_优质范文下载写作帮手| jrs高清nba(无插件)直播-jrs直播低调看直播-jrs直播nba-jrs直播 上海地磅秤|电子地上衡|防爆地磅_上海地磅秤厂家–越衡称重 | 气动机械手-搬运机械手-气动助力机械手-山东精瑞自动化设备有限公司 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 | 螺旋压榨机-刮泥机-潜水搅拌机-电动泥斗-潜水推流器-南京格林兰环保设备有限公司 | 自动检重秤-动态称重机-重量分选秤-苏州金钻称重设备系统开发有限公司 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 液氨泵,液化气泵-淄博「亚泰」燃气设备制造有限公司 | 北京印刷厂_北京印刷_北京印刷公司_北京印刷厂家_北京东爵盛世印刷有限公司 |