<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)一個類中有聲明為static final的變量,這樣的變量對類的加載器有一定的影響,首先看看下面的例子。

    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. }  

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

    運行結(jié)果為

    在看一個例子

    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. }  

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

    運行結(jié)果為

    1. FinalTest4 static block  
    2. 82 

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

    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. }  

    因為直接訪問Child,b,會先初始化Parent類,然后初始化Child類。

    運行結(jié)果為

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

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

    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變量,則只會直接初始化parent類,不會初始化Child類

    運行結(jié)果如下

    1. Parent static block
    2. 3

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 好大好深好猛好爽视频免费| 亚洲国产精品成人精品无码区在线| 一级女性全黄久久生活片免费| 亚洲成色999久久网站| 免费永久看黄在线观看app| 日本一卡精品视频免费| 羞羞视频免费网站日本| 国产亚洲高清在线精品不卡| 亚洲免费精彩视频在线观看| 四虎精品亚洲一区二区三区| 99xxoo视频在线永久免费观看| 久久免费观看国产精品88av| 午夜不卡AV免费| 亚欧洲精品在线视频免费观看| 亚洲娇小性xxxx色| 亚洲国产精品成人精品无码区| 亚洲国产精品无码av| 亚洲综合国产精品| 日韩精品亚洲aⅴ在线影院| 青青青国产免费一夜七次郎| 99久久精品国产免费| 亚洲毛片在线免费观看| 免费黄网站在线观看| A国产一区二区免费入口| 福利片免费一区二区三区| 青娱乐在线视频免费观看| 亚洲色偷精品一区二区三区| 亚洲图片一区二区| 国产精品亚洲综合五月天| 亚洲av永久无码一区二区三区| 亚洲一卡2卡3卡4卡国产网站 | 久久精品中文字幕免费| 91久久精品国产免费一区| 免费观看一区二区三区| 9i9精品国产免费久久| 亚洲成人免费在线| 久久伊人免费视频| 免费做爰猛烈吃奶摸视频在线观看| 亚洲一区免费视频| 亚洲一区二区三区免费视频| 好吊妞视频免费视频|