<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    當一個類中有聲明為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類的初始化。作為表現,也就是static靜態代碼快不會被加載。

    運行結果為

    在看一個例子

    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靜態代碼快的加載。

    運行結果為

    1. FinalTest4 static block  
    2. 82 

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

    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類。

    運行結果為

    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類

    運行結果如下

    1. Parent static block
    2. 3

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲欧洲一区二区三区| 亚洲啪啪免费视频| 91精品免费观看| 亚洲AV无码国产剧情| 国产亚洲高清不卡在线观看| 真人做人试看60分钟免费视频| 真正全免费视频a毛片| 亚洲国产高清在线| 曰皮全部过程视频免费国产30分钟 | 亚洲国产一区视频| www.免费在线观看| 国产免费伦精品一区二区三区| 亚洲熟妇色自偷自拍另类| 国产一区二区三区在线免费观看 | 国产成人免费福利网站| 特级无码毛片免费视频尤物 | 国产免费A∨在线播放| 亚洲伊人久久大香线蕉啊| 亚洲色偷偷狠狠综合网| 亚洲人成电影网站免费| 在线观看免费视频一区| 老司机亚洲精品影院在线观看| 亚洲精品免费在线视频| 国产亚洲精品免费视频播放| 成年人视频在线观看免费| 无码少妇精品一区二区免费动态| 免费人成再在线观看网站| 色在线亚洲视频www| 久久亚洲私人国产精品| 亚洲午夜福利在线观看| 国产在线观看免费不卡| 无码中文在线二区免费| 最近免费最新高清中文字幕韩国| 2022免费国产精品福利在线| 亚洲精品无码久久久久牙蜜区| 67pao强力打造67194在线午夜亚洲| 久久亚洲国产精品五月天婷| 国产免费无遮挡精品视频| 成年大片免费视频| 中文字幕影片免费在线观看 | 成年男女免费视频网站|