真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

《Java架構(gòu)筑基》從Java基礎(chǔ)講起——深入理解Static-創(chuàng)新互聯(lián)

1. static的作用和特點(diǎn)

可以用來修飾:成員變量,成員方法,代碼塊,內(nèi)部類等。具體如下所示

仙游ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!

修飾成員變量和成員方法

  • 被 static 修飾的成員屬于類,不屬于單個這個類的某個對象,被類中所有對象共享,可以并且建議通過類名調(diào)用。
  • 被static 聲明的成員變量屬于靜態(tài)成員變量,靜態(tài)變量存放在Java內(nèi)存區(qū)域的方法區(qū)。

靜態(tài)代碼塊

  • 靜態(tài)代碼塊定義在類中方法外,靜態(tài)代碼塊在非靜態(tài)代碼塊之前執(zhí)行(靜態(tài)代碼塊—>非靜態(tài)代碼塊—>構(gòu)造方法)
  • 該類不管創(chuàng)建多少對象,靜態(tài)代碼塊只執(zhí)行一次.

靜態(tài)內(nèi)部類(static修飾類的話只能修飾內(nèi)部類)

靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類之間存在一個大的區(qū)別:

  • 非靜態(tài)內(nèi)部類在編譯完成之后會隱含地保存著一個引用,該引用是指向創(chuàng)建它的外圍內(nèi),但是靜態(tài)內(nèi)部類卻沒有。沒有這個引用就意味著:1.它的創(chuàng)建是不需要依賴外圍類的創(chuàng)建。2.它不能使用任何外圍類的非static成員變量和方法。

靜態(tài)導(dǎo)包(用來導(dǎo)入類中的靜態(tài)資源,1.5之后的新特性):

  • 這兩個關(guān)鍵字連用可以指定導(dǎo)入某個類中的指定靜態(tài)資源,并且不需要使用類名調(diào)用類中靜態(tài)成員,可以直接使用類中靜態(tài)成員變量和成員方法。

static關(guān)鍵字的特點(diǎn)

  • 隨著類的加載而加載
  • 優(yōu)先于對象存在
  • 被類的所有對象共享
  • 可以通過類名調(diào)用【靜態(tài)修飾的內(nèi)容一般我們稱其為:與類相關(guān)的,類成員】

static的注意事項(xiàng)

  • 在靜態(tài)方法中是沒有this關(guān)鍵字的
    • 靜態(tài)是隨著類的加載而加載,this是隨著對象的創(chuàng)建而存在。
    • 靜態(tài)比對象先存在。
  • 靜態(tài)方法只能訪問靜態(tài)的成員變量和靜態(tài)的成員方法【靜態(tài)只能訪問靜態(tài),非靜態(tài)可以訪問靜態(tài)的也可以訪問非靜態(tài)的】

2. static變量存儲位置

static變量存儲位置

  • 注意是:存儲在JVM的方法區(qū)中
  • static變量在類加載時(shí)被初始化,存儲在JVM的方法區(qū)中,整個內(nèi)存中只有一個static變量的拷貝,可以使用類名直接訪問,也可以通過類的實(shí)例化對象訪問,一般不推薦通過實(shí)例化對象訪問,通俗的講static變量屬于類,不屬于對象,任何實(shí)例化的對象訪問的都是同一個static變量,任何地放都可以通過類名來訪問static變量。

3. 用static靜態(tài)變量潛在性問題

用static靜態(tài)變量潛在性問題

  • 占用內(nèi)存,并且內(nèi)存一般不會釋放;
  • 在系統(tǒng)不夠內(nèi)存情況下會自動回收靜態(tài)內(nèi)存,這樣就會引起訪問全局靜態(tài)錯誤。
  • 在Android中不能將activity作為static靜態(tài)對象,這樣使activity的所有組件對象都存入全局內(nèi)存中,并且不會被回收;

4. 靜態(tài)變量的生命周期

靜態(tài)變量的生命周期

  • 類在什么時(shí)候被加載?
  • 當(dāng)我們啟動一個app的時(shí)候,系統(tǒng)會創(chuàng)建一個進(jìn)程,此進(jìn)程會加載一個Dalvik VM的實(shí)例,然后代碼就運(yùn)行在DVM之上,類的加載和卸載,垃圾回收等事情都由DVM負(fù)責(zé)。也就是說在進(jìn)程啟動的時(shí)候,類被加載,靜態(tài)變量被分配內(nèi)存。

5. 靜態(tài)變量何時(shí)銷毀

靜態(tài)變量何時(shí)銷毀

  • 類在什么時(shí)候被卸載?在進(jìn)程結(jié)束的時(shí)候。
  • 說明:一般情況下,所有的類都是默認(rèn)的ClassLoader加載的,只要ClassLoader存在,類就不會被卸載,而默認(rèn)的ClassLoader生命周期是與進(jìn)程一致的

6. 靜態(tài)引用的對象回收

靜態(tài)引用的對象回收

  • 只要靜態(tài)變量沒有被銷毀也沒有置null,其對象一直被保持引用,也即引用計(jì)數(shù)不可能是0,因此不會被垃圾回收。因此,單例對象在運(yùn)行時(shí)不會被回收

7. 靜態(tài)方法變量內(nèi)存圖

描述Dog對象:

public class Dog {
    public static String name;

    public static int age;

    public static void showNameAge() {
        System.out.println("name:" + name + " age:" + age);
    }
}

main測試方法:

public class Demo01 {
    public static void main(String[] args) {
        Dog.name = "阿白";
        Dog.age = 98;

        Dog.name = "李雙";
        Dog.age = 90;

        Dog.showNameAge();
    }
}

//執(zhí)行結(jié)果:name:李雙 age:90

大概流程就是

  1. 執(zhí)行 java Demo01 是給JVM發(fā)送指令,和JVM說:把這個 Demo01.class 去執(zhí)行;
  2. JVM就去執(zhí)行 Demo01.class 文件里面的字節(jié)碼,首先第一步 是把 Demo01.class字節(jié)碼加載進(jìn)內(nèi)存;
  3. 第二步把Demo01.class放入字節(jié)碼存放區(qū);
  4. 第三步把Demo01里面的靜態(tài)數(shù)據(jù)(靜態(tài)變量 與 靜態(tài)方法)分配到 靜態(tài)區(qū);
  5. 第四步main方法進(jìn)棧,如何進(jìn)棧的,是把靜態(tài)區(qū)里面的main方法拿到運(yùn)行區(qū)(棧) 然后就進(jìn)棧了;
  6. 第五步main方法執(zhí)行 Demo. 的時(shí)候,就在此時(shí) 才把Dog.class加載進(jìn)內(nèi)存;
  7. 第六步把Dog.class放入字節(jié)碼存放區(qū);
  8. 第七步把Dog里面的靜態(tài)數(shù)據(jù)(靜態(tài)變量 與 靜態(tài)方法)分配到 靜態(tài)區(qū);
  9. 第八步 在main方法中執(zhí)行 Dog.name 是向靜態(tài)區(qū)去找到 Dog.name 拿來使用,由于是共享的 name 只保持最后修改的數(shù)據(jù);

8. 靜態(tài)變量和成員變量的區(qū)別

A:所屬不同

  • 靜態(tài)變量屬于類,所以也稱為類變量
  • 成員變量屬于對象,所以也稱為實(shí)例變量(對象變量)

B:內(nèi)存中位置不同

  • 靜態(tài)變量存儲于方法區(qū)的靜態(tài)區(qū)
  • 成員變量存儲于堆內(nèi)存

C:內(nèi)存出現(xiàn)時(shí)間不同

  • 靜態(tài)變量隨著類的加載而加載,隨著類的消失而消失
  • 成員變量隨著對象的創(chuàng)建而存在,隨著對象的消失而消失

D:調(diào)用不同

  • 靜態(tài)變量可以通過類名調(diào)用,也可以通過對象調(diào)用
  • 成員變量只能通過對象名調(diào)用

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


文章標(biāo)題:《Java架構(gòu)筑基》從Java基礎(chǔ)講起——深入理解Static-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://weahome.cn/article/dopjpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部