[英]Why is a static method called main launchable?
我想 jvm 有一些東西。但是 jvm 是如何識別它的?對於名稱 main 或靜態屬性?
這是我的小困惑。
當 JVM 通過指定一個類來運行應用程序時,它會尋找帶有public static void main(String[])
簽名的 main 方法。
TLDR; 正如 Java 語言規范 (JLS) 所指定的那樣,既沒有main
方法也沒有static
方法是不夠的,並且方法需要兩者兼有。
如果有關於 JVM 的內容,那么它通常在 Java 語言規范中指定。 在這種情況下, 第 12.1 節指定了 main 方法的要求:
public static void main(String[] args)
或者
public static void main(String... args)
因此,它不僅是靜態的,還需要是公共的並具有void
返回類型(整數可能更有意義,但 Java 是多線程的,因此使用System.exit(int)
給出返回值)。 此外,如您所料,它必須接受String
參數。
請注意, main
方法被設計用於 CLI 環境,例如 Windows 中的命令行或 Linux / Unix / MacOS 中的眾多 shell 之一。 它類似於 C/C++ 的main
方法; Java 基於 C/C++ 語言。
我還對照 Java 18 對此進行了檢查,文本仍然相同。
Java main 方法是任何Java 程序的入口點。 它的語法總是public static void main(String[] args)
。
當 java 運行時啟動時,不存在該類的對象。 這就是為什么 main 方法必須是靜態的,以便 JVM 可以將類加載到內存中並調用 main 方法。 如果 main 方法不是靜態的,JVM 將無法調用它,因為該類的對象不存在
你可以在這里找到詳細的解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.