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

snvhrwxg  于 2022-11-07  发布在  其他
关注(0)|答案(3)|浏览(186)

我猜jvm是有问题的,但是jvm是如何识别它的呢?是识别main这个名字,还是识别static属性?
这是我的小困惑。

nlejzf6q

nlejzf6q1#

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

mzillmmw

mzillmmw2#

Java main方法是任何java程序的入口点,它的语法总是public static void main(String[] args)
当java运行时启动时,类的对象不存在。这就是为什么main方法必须是静态的,这样JVM才能将类加载到内存中并调用main方法。如果main方法不是静态的,JVM就不能调用它,因为类的对象不存在
你可以找到详细的解释here

mwkjh3gx

mwkjh3gx3#

TLDR;根据Java语言规范(JLS)的规定,main方法和static方法都不能满足要求,方法必须同时满足这两种要求。
如果有关于JVM的东西,那么它通常在Java语言规范中被指定。在这种情况下,它是12.1节,它指定了一个主方法的要求:

public static void main(String[] args)

public static void main(String... args)

因此,除了 static 之外,它还需要是公共的,并具有void返回类型(整数可能更有意义,但Java是多线程的,因此返回值使用System.exit(int))。此外,正如您所期望的,它必须接受String参数。
注意,main方法被设计为在CLI环境中使用,例如Windows中的命令行或Linux / Unix / MacOS中的许多shell之一。它类似于C/C++ main方法; Java是基于C/C++语言的。
我还对照Java 18检查了这个,文本仍然是一样的。

相关问题