<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 110, comments - 101, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    當(dāng)一個(gè)類中有聲明為static final的變量,這樣的變量對(duì)類的加載器有一定的影響,首先看看下面的例子。

    1. package com.bird.classLoad;  
    2.  
    3. class FinalTest{  
    4.       
    5.     public static final int a = 6/3;  
    6.       
    7.     static{  
    8.         System.out.println("FinalTest static block");  
    9.     }  
    10. }  
    11.  
    12. public class Test3 {  
    13.     public static void main(String[] args) {  
    14.         System.out.println(FinalTest.a);  
    15.     }  
    16. }  

    因?yàn)閍是static final變量,且它等于6/3,在編譯的時(shí)候就可以知道它的值,所以直接訪問a的值不會(huì)引起FinalTest類的初始化。作為表現(xiàn),也就是static靜態(tài)代碼快不會(huì)被加載。

    運(yùn)行結(jié)果為

    在看一個(gè)例子

    1. package com.bird.classLoad;  
    2.  
    3. import java.util.Random;  
    4.  
    5. class FinalTest4{  
    6.       
    7.     public static final int a = new Random().nextInt(100);  
    8.       
    9.     static{  
    10.         System.out.println("FinalTest4 static block");  
    11.     }  
    12. }  
    13.  
    14. public class Test4 {  
    15.  
    16.     public static void main(String[] args) {  
    17.         System.out.println(FinalTest4.a);  
    18.     }  
    19. }  

    這個(gè)static final變量a因?yàn)閕在編譯的時(shí)候無法知道它的確切的值,所以只有等到運(yùn)行的時(shí)候才能知道,所以自己訪問FinalTest4.a會(huì)引起FinalTest4類的初始化。也就是static靜態(tài)代碼快的加載。

    運(yùn)行結(jié)果為

    1. FinalTest4 static block  
    2. 82 

    下面的例子是講,當(dāng)子類被主動(dòng)訪問的時(shí)候,會(huì)引起其直接父類的初始化

    1. package com.bird.classLoad;  
    2.  
    3. class Parent{  
    4.       
    5.     static int a = 3;  
    6.       
    7.     static{  
    8.         System.out.println("Parent static block");  
    9.     }  
    10. }  
    11.  
    12. class Child extends Parent{  
    13.       
    14.     static int b = 4;  
    15.     static{  
    16.         System.out.println("Chind static block");  
    17.     }  
    18. }  
    19.  
    20. public class Test5 {  
    21.       
    22.     public static void main(String[] args) {  
    23.         System.out.println(Child.b);  
    24.           
    25.     }  
    26. }  

    因?yàn)橹苯釉L問Child,b,會(huì)先初始化Parent類,然后初始化Child類。

    運(yùn)行結(jié)果為

    1. Parent static block  
    2. Chind static block  
    3. 4 

    如果通過子類直接訪問父類的變量,只會(huì)初始化父類而不會(huì)初始化子類

    1. package com.bird.classLoad;  
    2.  
    3. class Parent{  
    4.       
    5.     static int a = 3;  
    6.       
    7.     static{  
    8.         System.out.println("Parent static block");  
    9.     }  
    10. }  
    11.  
    12. class Child extends Parent{  
    13.       
    14.     static{  
    15.         System.out.println("Chind static block");  
    16.     }  
    17. }  
    18.  
    19. public class Test5 {  
    20.       
    21.     public static void main(String[] args) {  
    22.         System.out.println(Child.a);  
    23.           
    24.     }  
    25. }  

    直接訪問Parent類的a變量,則只會(huì)直接初始化parent類,不會(huì)初始化Child類

    運(yùn)行結(jié)果如下

    1. Parent static block
    2. 3

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 日韩精品亚洲人成在线观看| 亚洲黄网在线观看| 亚洲男女一区二区三区| 亚洲大尺度无码无码专线一区| 一级毛片不卡免费看老司机| 亚欧免费一级毛片| 日本免费人成黄页在线观看视频| 亚洲精品无码专区在线在线播放 | 亚洲一区二区三区深夜天堂| 精品特级一级毛片免费观看| 99re免费在线视频| 免费国产小视频在线观看| 亚洲AV无码AV男人的天堂| 美国毛片亚洲社区在线观看| 99热在线精品免费播放6| 免费看国产精品麻豆| 91亚洲一区二区在线观看不卡| 男男gvh肉在线观看免费| 50岁老女人的毛片免费观看| 亚洲Aⅴ无码一区二区二三区软件| 亚洲精品永久www忘忧草| a免费毛片在线播放| 成人毛片免费网站| 亚洲av日韩av不卡在线观看| 美女视频黄a视频全免费网站色| 最近中文字幕mv免费高清在线| 亚洲精品无码av天堂| 精品亚洲成A人无码成A在线观看| 中文字幕在线成人免费看| 香蕉高清免费永久在线视频| 亚洲综合一区二区精品久久| 毛片基地看看成人免费| 国产成人精品免费视频软件| 亚洲美女视频一区| 97国免费在线视频| 亚洲JIZZJIZZ中国少妇中文| 色天使亚洲综合在线观看| 免费无码又爽又刺激高潮视频| 久久亚洲国产成人精品无码区| 亚洲AV无码一区二区大桥未久 | 国产亚洲精品一品区99热|