乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JAVA程序執(zhí)行順序,你了解了嗎?

       520jefferson 2013-09-27


           一。JAVA中執(zhí)行順序

      1. 靜態(tài)塊
      2. 構(gòu)造器
      3. 父類構(gòu)造器

          二。JAVA中賦值順序

      1.       靜態(tài)塊直接賦值
      2.       塊直接賦值
      3.       父類繼承的屬性已賦值
      4.       靜態(tài)變量聲明時賦值
      5.       成員變量聲明時賦值
      6.       構(gòu)造器賦值

       

       第一部分很好測試,我們只需要寫一個子類,類中定義一個靜態(tài)塊,一個普通塊,一個構(gòu)造器,它的父類構(gòu)造器,都打印一條語句,即可明白它們直接的執(zhí)行順序

       

      Mastiff類

       

      Java代碼  收藏代碼
      1. <span style="font-size: medium;">/** 
      2.  * 子類藏獒 
      3.  */  
      4. public class Mastiff extends Dog {  
      5.     public Mastiff() {  
      6.         System.out.println("Mastiff");  
      7.     }  
      8.   
      9.     {  
      10.         System.out.println("block");  
      11.     }  
      12.     static {  
      13.         System.out.println("static block");  
      14.     }  
      15.       
      16.     public static void  main(String[] args){  
      17.         Mastiff mastiff=new Mastiff();  
      18.           
      19.     }  
      20. }  
      21. </span>  

       

       

        DOG類

       

      Java代碼  收藏代碼
      1. <span style="font-size: medium;">/** 
      2.  *DOG父類 
      3.  */  
      4. public class Dog {  
      5.     public Dog() {  
      6.         System.out.println("Dog");  
      7.     }  
      8. }  
      9. </span>  

       

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

      static block
      Dog
      block
      Mastiff

       

      也就是說,在我們的程序中,實(shí)例化一個類對象的時候,運(yùn)行順序?yàn)椋?/span>

      1.   靜態(tài)塊
      2.   父類構(gòu)造器
      3.   本類中的塊
      4.   本類的構(gòu)造器 

      我們可以更進(jìn)一步,如果在父類中也有塊和靜態(tài)塊呢?

          DOG類改進(jìn)后源碼 

      Java代碼  收藏代碼
      1. <span style="font-size: medium;">/** 
      2.  *DOG父類 
      3.  */  
      4. public class Dog {  
      5.     public Dog() {  
      6.         System.out.println("Dog");  
      7.     }  
      8.     static{  
      9.         System.out.println("super static block");  
      10.     }  
      11.       
      12.     {  
      13.         System.out.println("super block");  
      14.     }  
      15. }  
      16. </span>  

        

         Mastiff改進(jìn)后源碼

      Java代碼  收藏代碼
      1. <span style="font-size: medium;">/** 
      2.  * 子類藏獒 
      3.  */  
      4. public class Mastiff extends Dog {  
      5.     public Mastiff() {  
      6.         System.out.println("Mastiff");  
      7.     }  
      8.   
      9.     {  
      10.         System.out.println("block");  
      11.           
      12.     }  
      13.     static {  
      14.         System.out.println("static block");  
      15.     }  
      16.       
      17.     public static void  main(String[] args){  
      18.         Mastiff mastiff=new Mastiff();        
      19.     }  
      20. }  
      21. </span>  

       

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

      super static block
      static block
      super block
      Dog
      block
      Mastiff

       也就是說此時的運(yùn)行順序?yàn)椋?/span>

      1.    父類靜態(tài)塊
      2.    自身靜態(tài)塊
      3.    父類塊
      4.    父類構(gòu)造器
      5.    自身塊
      6.    自身構(gòu)造器 

       

        好了,知道了運(yùn)行的順序,那么這是為什么呢?

               這就要從JVM中類的裝載機(jī)制和實(shí)例化機(jī)制開始說起,這里因?yàn)橹黝}原因,先不討論,有興趣的同學(xué)可以自己查資料。

       

      我們再來討論第二個問題,一個變量的值,它有可能在哪些地方確定呢??

      1. 從父類繼承該值(包括:1.作為父類的成員變量已經(jīng)賦值  2.在父類的塊中賦值  3.在父類的構(gòu)造器中賦值)
      2. 在構(gòu)造器中對其進(jìn)行賦值
      3. 在塊中進(jìn)行賦值
      4. 在方法調(diào)用中進(jìn)行賦值

        現(xiàn)在假設(shè)在我們剛剛的例子中,有一個變量type,表示狗的品種

       

      Java代碼  收藏代碼
      1. <span style="font-size: medium;">/** 
      2.  *DOG父類 
      3.  */  
      4. public class Dog {  
      5.     public String type="父類成員變量賦的值";  
      6.     public Dog() {  
      7.         System.out.println("父類構(gòu)造器--type-->"+type);  
      8.         type="父類構(gòu)造器賦的值";  
      9.                    System.out.println("父類構(gòu)造器----type--->"+type);  
      10.     }  
      11.       
      12.     {  
      13.         System.out.println("block---type--->"+type);  
      14.         type="父類塊賦的值";  
      15.     }  
      16. }  
      17. </span>  

       

         

      Java代碼  收藏代碼
      1. <span style="font-size: medium;">/** 
      2.  * 子類藏獒 
      3.  */  
      4. public class Mastiff extends Dog {  
      5.     public String type="成員變量賦的值";  
      6.     public Mastiff() {  
      7.         System.out.println("構(gòu)造器---type--->"+type);  
      8.         type="構(gòu)造器賦的值";  
      9.     }  
      10.       
      11.     public void say(){  
      12.         System.out.println("say---type---->"+type);  
      13.     }  
      14.   
      15.     {  
      16.         System.out.println("block---type--->"+type);  
      17.         type="塊賦的值";  
      18.           
      19.     }  
      20.       
      21.     public static void  main(String[] args){  
      22.         Mastiff mastiff=new Mastiff();  
      23.         mastiff.say()</span><span style="font-size: medium;">;</span><span style="font-size: medium;">        
      24.     }  
      25. }  
      26. </span>  

         

       

       執(zhí)行結(jié)果如下:

      block---type--->父類成員變量賦的值
      父類構(gòu)造器--type-->父類塊賦的值
      父類構(gòu)造器----type--->父類構(gòu)造器賦的值
      block---type--->成員變量賦的值
      構(gòu)造器---type--->塊賦的值
      say---type---->構(gòu)造器賦的值

       

      答案很明顯,賦值順序?yàn)椋?/span>

      1. 父類成員變量賦值
      2. 父類塊賦值
      3. 父類構(gòu)造器賦值
      4. 自身成員變量賦值
      5. 自身塊賦值
      6. 自身構(gòu)造器賦值

       

         

         結(jié)合我們前面說的程序中的執(zhí)行順序,這個顯然是很好理解的:

           1.成員變量賦值>>>塊賦值>>>構(gòu)造器賦值

           2.父類的塊>>父類構(gòu)造器>>自身塊>>自身構(gòu)造器


         又因?yàn)橐粋€成員變量是不可能在靜態(tài)變量中賦值的,而且又前面程序執(zhí)行順序可知

            靜態(tài)塊>>塊

         

         

        所以,程序的賦值步驟為

        1. 父類的靜態(tài)變量賦值
        2. 自身的靜態(tài)變量賦值
        3. 父類成員變量賦值
        4. 父類塊賦值
        5. 父類構(gòu)造器賦值
        6. 自身成員變量賦值
        7. 自身塊賦值
        8. 自身構(gòu)造器賦值

           

            本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
            轉(zhuǎn)藏 分享 獻(xiàn)花(0

            0條評論

            發(fā)表

            請遵守用戶 評論公約

            類似文章 更多