Java Main 方法:為什麼要靜態宣告?
Java main 方法有一個特定的簽章:
這就提出了一個問題:static 修飾符對於 main 來說是必不可少的嗎?方法?
約定,而非要求
與最初的印象相反,main 方法的靜態聲明是約定,而不是語言上的必要性。你可能會感到驚訝,但即使是方法名稱“main()”和 String[] 參數也只是約定。
替代約定
Java 21 引入了替代約定允許省略 String[] 參數、public 修飾符,甚至 static 修飾符。如果沒有 static 修飾符,將在 main() 呼叫之前建立該類別的實例,要求該類別具有非私有零參數建構函數。
Java Native Interface (JNI) 和java.exe
透過java.exe(或Windows 上的javaw.exe)執行Java 程式涉及JNI 調用,這些調用將JVM 作為DLL。 JNI 充當 JVM 和 C/C 環境之間的橋樑。
java.exe:一個簡單的C 應用程式
java.exe 本質上是一個簡化的C 應用程序,解析命令列參數,在JVM 中創建一個String 數組,使用JNI 定位指定類別中的main() 方法,並使用參數數組呼叫它。這個過程類似於 Java 反射,而是使用本機函數呼叫。
自訂 java.exe
可以修改 java.exe 的原始程式碼(提供了JDK)來變更其功能。這在基於 Java 的應用程式中用於自訂啟動器、提供獨特的圖示和處理特定場景(例如,將 COM 句柄傳遞給 main())。
便利性和歷史影響
main 方法的靜態特性提供了便利,並且與 C 語言採用的命名約定保持一致。它使 IDE 能夠自動偵測可啟動的類別。 專案.儘管存在替代方案,但「靜態」main 方法仍然作為 Java 程式設計中普遍存在的約定。
以上是為什麼Java中的main方法宣告為static?的詳細內容。更多資訊請關注PHP中文網其他相關文章!