为什么一个叫做main的静态方法是可启动的?



我猜jvm有点问题。但是jvm如何识别它呢?对于名称main,还是静态属性?

这就是我的小困惑。

当JVM通过指定一个类来运行应用程序时,它将查找具有public static void main(String[])签名的主方法。

Java main方法是任何Java程序的入口点。它的语法总是public static void main(String[] args)

当java运行时启动时,不存在类的对象。这就是为什么main方法必须是静态的,以便JVM可以将类加载到内存中并调用main方法。如果main方法不是静态的,JVM将无法调用它,因为没有类的对象存在

你可以在这里找到详细的解释。

;根据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中检查了这一点,文本仍然是相同的。

最新更新