1. 程式人生 > >JAVA的例項塊和靜態塊

JAVA的例項塊和靜態塊

例項塊

例項塊就是一個劃分的程式碼區域。{   程式碼   }

1.它是在構造器之前執行。

2.它和屬性初始化一同執行。

3.一個類中可以有很多個例項塊。

4. 多個例項塊執行順序是按照順序從上到下執行。

public class Test3 {
    {
        System.out.println("我是例項塊!");
    }
}
靜態塊

 靜態塊是類載入的時候和靜態屬性一起執行的。也是按順序從上往下執行。

public class Test3 {
    static{
        System.out.println("我是靜態塊!");
    }
}

那麼類是在什麼情況下會載入呢?

1.在宣告靜態屬性但並沒有使用屬性時,不會對類進行載入。使用靜態屬性時才會對類進行載入。

2.宣告或使用常量時都不會對類進行載入,因為常量的記憶體和類成員的記憶體不在同一記憶體內。

3.使用靜態方法或new肯定會載入類。

4.載入類方法:class.forName( 類的全名 )

怪題:


main方法中,new Test1();,然而Test1類中又new Test1,因為new物件的時候肯定會載入類,然而載入類其實就是載入靜態屬性,所以這就成了死迴圈。報出方法巢狀呼叫溢位的錯誤:java.lang.StackOverflowError