JAVA的例項塊和靜態塊
阿新 • • 發佈:2019-02-18
例項塊
例項塊就是一個劃分的程式碼區域。{ 程式碼 }
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