Java靜態變量、靜態塊、構造塊、構造函數、main函數、普通代碼塊的執行順序

測試代碼

public class SingleTest {

    public static String v = "StaticValue";

    static {
        System.out.println("static靜態變量:" + v);
        System.out.println("static靜態塊");
    }

    {
        System.out.println("構造塊");
    }

    public SingleTest() {
        System.out.println("構造函數");
    }

    public void say() {
        System.out.println("普通方法");
    }

    public static void main(String[] args) {
        System.out.println("main 開始");
        SingleTest singleTest = new SingleTest();
        singleTest.say();
        System.out.println("main 結束");
    }
}

 

結果

 

解釋

JVM虛擬機一啓動就會僅加載一次所有static變量,之後僅加載一次所有static代碼塊。每當有類實例化時,構造塊都會早於構造函數執行,然後再執行構造函數。

 

結論

一個類實例化時的執行順序:
靜態變量 > 靜態代碼塊 > 構造代碼塊 > 構造函數

細化執行順序爲:
靜態變量 > 靜態代碼塊 > main函數 > 構造代碼塊 > 構造函數 > 普通方法

 

查看類繼承時,靜態塊、構造塊、構造函數等的執行順序,請點擊

 

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