java 無參、有參構造方法;靜態、非靜態代碼塊執行順序

靜態代碼塊

   靜態代碼塊   static {   }

   非靜態代碼塊  {   }

靜態代碼塊和非靜態代碼塊的異同點如下:

相同點:都是JVM加載類時且在構造函數執行之前執行,在類中都可以定義多個,一般在代碼塊中對一些static變量進行賦值。 
不同點:靜態代碼塊在非靜態代碼塊之前執行(靜態代碼塊 > 非靜態代碼塊)。靜態代碼塊只在第一次new時執行一次,之後不再執行。而非靜態代碼塊每new一次就執行一次。

創建父類,寫入 靜態代碼塊和非靜態代碼塊

public class Parent {

    public Parent(){
        System.out.println("父類的無參");
    }

    public Parent(String a){
        System.out.println("父類的有參");
    }

    static {
        System.out.println("父類的靜態代碼塊");
    }

    {
        System.out.println("父類的非靜態代碼塊");
    }
}

子類

    public Son(){
        System.out.println("子類的無參");
    }

    public Son(String A){
        System.out.println("子類的有參");
    }

    static {
        System.out.println("子類的靜態代碼塊");
    }

    {
        System.out.println("子類的非靜態代碼塊");
    }

Test

public class Test {

    public static void main(String[] args) {

        Son son = new Son();
        System.out.println("*****");

        Son sons = new Son("yy");
        System.out.println("*****");
    }
}

結果

說明: 
         靜態代碼塊是在類加載時自動執行的,非靜態代碼塊在創建對象自動執行的代碼,不創建對象不執行該類的非靜態代碼塊。 順 序: 靜態代碼塊 –>非靜態代碼塊 –>類構造函數。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章