2012-11-10 68 views
15

最近在很多的節目我一直在看,我注意到Java靜態代碼塊

static { 
    //some code here 
} 

我只是在尋找一些有關此信息特別,我已經習慣了塊代碼全部在方法中,或者只是類,這是否簡單地使用靜態修飾符來設置塊中的所有代碼,還是還有其他更多的東西?

+0

我想你可以認爲它像一個構造函數,但對於類而言,不是類的任何實例。雖然我假設你可以有多個靜態塊,但是每個類只有一個構造函數。 –

回答

11

這可能是從 Static Initialization Blocks

重複的問題靜態塊只被調用一次,不管你創建該類型的多少對象。

+0

JVM是否保證每個應用程序域只能執行一次靜態塊? – AlexVPerl

+4

每次加載類時都會調用靜態塊。如果有多個加載類的類加載器,代碼將被執行多次。 –

+0

如果程序多次啓動,靜態塊會被多次調用 –

3

一旦JVM加載您的類,就會首先執行靜態塊中的代碼(例如,在您的構造函數之前)。

+0

這段代碼是不能從外部類訪問的嗎? – Dan

+1

以下是來自Oracle的官方說明http://docs.oracle.com/javase/tutorial/java/javaOO/initial.html –