22
這是什麼?Java無名靜態方法
public class ABC {
public ABC() {
System.out.println("world");
}
static {
System.out.println("hello");
}
}
會打印: 你好 世界
我真的不明白這一點,或者什麼樣的方法靜態代碼的。
這是什麼?Java無名靜態方法
public class ABC {
public ABC() {
System.out.println("world");
}
static {
System.out.println("hello");
}
}
會打印: 你好 世界
我真的不明白這一點,或者什麼樣的方法靜態代碼的。
它被稱爲「靜態初始化塊」。
它在第一次加載類時運行;只有一次。
例如,每次實例化類時都會運行構造函數;靜態塊只運行一次,當它首先由VM/Class加載器靜態加載時。
我認爲值得注意的是,每次類加載器加載一個類時,靜態塊就會運行一次。這意味着如果您有多個類加載器,該塊可以執行多次。
請參閱[this](http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.7)以瞭解靜態初始化程序的JLS描述和[this]( http://docs.oracle.com/javase/specs/jls/se7/html/jls-12.html#jls-12.4.2)以獲得初始化順序的JLS描述,這可能很重要。 – selig 2013-06-23 18:07:53