Java靜態方法塊、非靜態方法塊、構造方法、靜態方法執行順序

示範類StaticTest.java


public class StaticTest {
    {//只有當創建對象的時候執行
        System.out.println("H1");
    }
    static {//加載該類就執行,僅一次加載   程序執行中一直使用
        System.out.println("H2");
    }
    StaticTest()
    {
        System.out.println("H3");
    }
static void printhello()
{
    System.out.println("H4");
}
    public static void main(String[] args) {
        System.out.println("1");
        StaticTest st;
        System.out.println("2");
        new StaticTest();
        System.out.println("3");
        StaticTest.printhello();
        System.out.println("4");
        StaticTest st2=new StaticTest();
        System.out.println("5");
        st2.printhello();
    }
}

程序執行結果

H2
1
2
H1
H3
3
H4
4
H1
H3
5
H4

知識點:

靜態方法塊在加載該類的時候執行,且只執行一次。static{}

非靜態方法塊在創建對象時執行,創建一次執行一次。{}

靜態方法塊優先於非靜態方法塊執行,方法塊優先於構造方法執行     優先級 static{} >    {}   >    StaticTest(){}

 

 

 

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