靜塊何時何地會在 Java 中執行?
靜態塊是一段帶有 static 關鍵字的程式碼塊。通常,這些程式碼塊用於初始化靜態成員。JVM 會在類載入時在 main 方法之前執行靜態塊。
示例
public class MyClass { static{ System.out.println("Hello this is a static block"); } public static void main(String args[]){ System.out.println("This is main method"); } }
輸出
Hello this is a static block This is main method
執行靜態塊
JVM 首先會查詢 main 方法(至少是最新版本),然後開始執行包含靜態塊在內的程式。因此,如果沒有 main 方法,你無法執行靜態塊。
示例
public class Sample { static { System.out.println("Hello how are you"); } }
由於上述程式沒有 main 方法,如果你編譯並執行它,將收到一條錯誤訊息。
C:\Sample>javac StaticBlockExample.java C:\Sample>java StaticBlockExample Error: Main method not found in class StaticBlockExample, please define the main method as: public static void main(String[] args) or a JavaFX application class must extend javafx.application.Application
如果你想執行靜態塊,則需要有 Main 方法,並且該類的靜態塊會在 main 方法之前執行。
示例
public class StaticBlockExample { static { System.out.println("This is static block"); } public static void main(String args[]){ System.out.println("This is main method"); } }
輸出
This is static block This is main method
廣告