2009-12-02 127 views
22

這是什麼?Java無名靜態方法

public class ABC { 
    public ABC() { 
     System.out.println("world"); 
    } 
    static { 
     System.out.println("hello"); 
    } 
} 

會打印: 你好 世界

我真的不明白這一點,或者什麼樣的方法靜態代碼的。

回答

48

它被稱爲「靜態初始化塊」。

它在第一次加載類時運行;只有一次。

例如,每次實例化類時都會運行構造函數;靜態塊只運行一次,當它首先由VM/Class加載器靜態加載時。

+0

請參閱[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

7

我認爲值得注意的是,每次類加載器加載一個類時,靜態塊就會運行一次。這意味着如果您有多個類加載器,該塊可以執行多次。