2016-10-10 103 views
-1

我懷疑它是如何在Java中使用靜態塊的。據我所知,每當JVM加載類時,都會執行靜態塊內的代碼。我不明白的是,什麼時候正是一個類加載。JAVA執行多少次靜態塊?

例如,假設我有類MyObject內靜態塊,然後從另一個類我有這樣的代碼:

MyObject o1= new MyObject(); 
MyObject o2= new MyObject(); 

多少次靜態塊在這種情況下執行?

+0

什麼問題?何時載入類或執行了多少次靜態塊? – seal

+0

@seal - 我問了兩個問題 – Szanownego

+1

一個類只加載一次,第一次需要加載。 JVM的確切時間取決於JVM的實現。 –

回答

0

靜態塊內部的代碼在JVM第一次加載類時執行。

如果再次加載,那麼靜態塊將不會執行。您可以使用Class.forName(「class」)方法顯式加載該類來執行您的靜態塊。

你的情況

MyObject o1= new MyObject(); 
MyObject o2= new MyObject(); 

當你第一次創建對象時,你的靜態塊將被執行。你再次創建另一個對象,它不會執行。他們共享相同的數據副本。

+1

*「每次JVM第一次加載類時」* - 這是多少次? :-)第一次只有 –

+0

。 – Pirate

+0

什麼是「* JVM *第一次加載類的時間*」?多久才能加載一次「*第一次*」?你是什​​麼意思與「*如果你再次加載*」;你怎麼看,你多久可以上課? – Holger