我懷疑它是如何在Java中使用靜態塊的。據我所知,每當JVM加載類時,都會執行靜態塊內的代碼。我不明白的是,什麼時候正是一個類加載。JAVA執行多少次靜態塊?
例如,假設我有類MyObject
內靜態塊,然後從另一個類我有這樣的代碼:
MyObject o1= new MyObject();
MyObject o2= new MyObject();
多少次靜態塊在這種情況下執行?
我懷疑它是如何在Java中使用靜態塊的。據我所知,每當JVM加載類時,都會執行靜態塊內的代碼。我不明白的是,什麼時候正是一個類加載。JAVA執行多少次靜態塊?
例如,假設我有類MyObject
內靜態塊,然後從另一個類我有這樣的代碼:
MyObject o1= new MyObject();
MyObject o2= new MyObject();
多少次靜態塊在這種情況下執行?
靜態塊內部的代碼在JVM第一次加載類時執行。
如果再次加載,那麼靜態塊將不會執行。您可以使用Class.forName(「class」)方法顯式加載該類來執行您的靜態塊。
你的情況,
MyObject o1= new MyObject();
MyObject o2= new MyObject();
當你第一次創建對象時,你的靜態塊將被執行。你再次創建另一個對象,它不會執行。他們共享相同的數據副本。
什麼問題?何時載入類或執行了多少次靜態塊? – seal
@seal - 我問了兩個問題 – Szanownego
一個類只加載一次,第一次需要加載。 JVM的確切時間取決於JVM的實現。 –