1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢(xún)
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
      《Java架構(gòu)筑基》從Java基礎(chǔ)講起——深入理解Static-創(chuàng)新互聯(lián)

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

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

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

      修飾成員變量和成員方法

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

      靜態(tài)代碼塊

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

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

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

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

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

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

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

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

      static的注意事項(xiàng)

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

      2. static變量存儲(chǔ)位置

      static變量存儲(chǔ)位置

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      描述Dog對(duì)象:

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

      main測(cè)試方法:

      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說(shuō):把這個(gè) 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 拿來(lái)使用,由于是共享的 name 只保持最后修改的數(shù)據(jù);

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

      A:所屬不同

      • 靜態(tài)變量屬于類(lèi),所以也稱(chēng)為類(lèi)變量
      • 成員變量屬于對(duì)象,所以也稱(chēng)為實(shí)例變量(對(duì)象變量)

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

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

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

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

      D:調(diào)用不同

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

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


      新聞名稱(chēng):《Java架構(gòu)筑基》從Java基礎(chǔ)講起——深入理解Static-創(chuàng)新互聯(lián)
      分享路徑:http://www.ef60e0e.cn/article/dopjpd.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        乌海市| 黄梅县| 奈曼旗| 洛宁县| 广昌县| 兴山县| 宁津县| 安新县| 建宁县| 沅江市| 萝北县| 长海县| 广河县| 荆门市| 延川县| 怀远县| 朝阳市| 攀枝花市| 八宿县| 桃园县| 锦州市| 巨野县| 盘锦市| 通辽市| 辉县市| 邳州市| 霸州市| 无极县| 莫力| 南平市| 静安区| 弥渡县| 昆山市| 沂水县| 禹州市| 茶陵县| 青阳县| 建昌县| 临朐县| 遂川县| 普兰县|