簡體   English   中英

為什么稱為 main 可啟動的靜態方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM