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

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

    • 分享

      Java初始化順序

       zhngjan 2016-03-07
      1  無(wú)繼承情況下的Java初始化順序:
      class Sample
      {
            Sample(String s)
            {
                  System.out.println(s);
            }
            Sample()
            {
                  System.out.println("Sample默認(rèn)構(gòu)造函數(shù)被調(diào)用");
            }
      }
      class Test{
            static Sample sam=new Sample("靜態(tài)成員sam初始化");
            Sample sam1=new Sample("sam1成員初始化");
            static{
                  System.out.println("static塊執(zhí)行");
                  if(sam==null)System.out.println("sam is null");
                  sam=new Sample("靜態(tài)塊內(nèi)初始化sam成員變量");
                  }
            Test()
            {
                  System.out.println("Test默認(rèn)構(gòu)造函數(shù)被調(diào)用");
            }

      }
       public static void  main(String  str[])
      {

           Test a=new Test();

       }
      輸出結(jié)果為:
      靜態(tài)成員sam初始化     -----靜態(tài)成員初始化
      static塊執(zhí)行          -----靜態(tài)塊被執(zhí)行
      靜態(tài)塊內(nèi)初始化sam成員變量 ----靜態(tài)塊執(zhí)行
      sam1成員初始化      -----普通成員初始化
      Test默認(rèn)構(gòu)造函數(shù)被調(diào)用  -----構(gòu)造函數(shù)執(zhí)行


      由此可以得出結(jié)論:
      靜態(tài)成員變量首先初始化(注意,Static可以看做一個(gè)靜態(tài)成員,其執(zhí)行順序和其在類中申明的順序有關(guān))
      b 普通成員初始化
      c 執(zhí)行構(gòu)造函數(shù)。

      對(duì)于靜態(tài)成員(static塊可以看成普通的一個(gè)靜態(tài)成員,其并不一定在類初始化時(shí)首先執(zhí)行)和普通成員,其初始化順序只與其在類定義中的順序有關(guān),和其他因素?zé)o關(guān)。
      例如下面的例子:


      class Test{
            static{
                  System.out.println("static 塊 1  執(zhí)行");
                  }
            static Sample staticSam1=new Sample("靜態(tài)成員staticSam1初始化");
            Sample sam1=new Sample("sam1成員初始化");
            static Sample staticSam2=new Sample("靜態(tài)成員staticSam2初始化");
            static{
                  System.out.println("static 塊 2  執(zhí)行");
                  }
            Test()
            {
                  System.out.println("Test默認(rèn)構(gòu)造函數(shù)被調(diào)用");
            }
            Sample sam2=new Sample("sam2成員初始化");

      }


      則結(jié)果為:
      static 塊 1  執(zhí)行
      靜態(tài)成員staticSam1初始化
      靜態(tài)成員staticSam2初始化
      static 塊 2  執(zhí)行 
                            --------靜態(tài)成員
      sam1成員初始化
      sam2成員初始化
                            --------普通成員
      Test默認(rèn)構(gòu)造函數(shù)被調(diào)用
                            --------構(gòu)造函數(shù)


      2 Java繼承情況下的初始化順序:

      class Test{
            static{
                  System.out.println("父類static 塊 1  執(zhí)行");
                  }
            static Sample staticSam1=new Sample("父類 靜態(tài)成員staticSam1初始化");
            Sample sam1=new Sample("父類 sam1成員初始化");
            static Sample staticSam2=new Sample("父類 靜態(tài)成員staticSam2初始化");
            static{
                  System.out.println("父類 static 塊 2  執(zhí)行");
                  }
            Test()
            {
                  System.out.println("父類 Test默認(rèn)構(gòu)造函數(shù)被調(diào)用");
            }
            Sample sam2=new Sample("父類 sam2成員初始化");

      }

      class TestSub extends Test
      {
            static Sample staticSamSub=new Sample("子類 靜態(tài)成員staticSamSub初始化");
            TestSub()
            {
                  System.out.println("子類 TestSub 默認(rèn)構(gòu)造函數(shù)被調(diào)用");
            }
            Sample sam1=new Sample("子類 sam1成員初始化");
            static Sample staticSamSub1=new Sample("子類 靜態(tài)成員staticSamSub1初始化");
            
            static{System.out.println("子類 static 塊  執(zhí)行");}
            Sample sam2=new Sample("子類 sam2成員初始化");
      }

      執(zhí)行結(jié)果:
      父類 static 塊 1  執(zhí)行
      父類 靜態(tài)成員staticSam1初始化
      父類 靜態(tài)成員staticSam2初始化
      父類 static 塊 2  執(zhí)行
                              --------父類靜態(tài)成員初始化
      子類 靜態(tài)成員staticSamSub初始化
      子類 靜態(tài)成員staticSamSub1初始化
      子類 static 塊  執(zhí)行
                              -------子類靜態(tài)成員初始化
      父類 sam1成員初始化
      父類 sam2成員初始化
      父類 Test默認(rèn)構(gòu)造函數(shù)被調(diào)用       
                              -------父類普通成員初始化和構(gòu)造函數(shù)執(zhí)行
      子類 sam1成員初始化
      子類 sam2成員初始化
      子類 TestSub 默認(rèn)構(gòu)造函數(shù)被調(diào)用
                              -------父類普通成員初始化和構(gòu)造函數(shù)執(zhí)行


      由此得出Java初始化順序結(jié)論:
      1 繼承體系的所有靜態(tài)成員初始化(先父類,后子類)
      2 父類初始化完成(普通成員的初始化-->構(gòu)造函數(shù)的調(diào)用)
      3 子類初始化(普通成員-->構(gòu)造函數(shù))


      Java初始化順序如圖:

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

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多