-1

可能重复:
为什么 Java 主方法是静态的?

JAVA还支持反射JAVA为什么需要main方法是静态的?

使用反射我们可以创建类的对象,甚至可以调用该类的方法,所以为什么 JAVA 需要 main 方法是静态的。

感谢您对此的评论。

4

5 回答 5

13

唯一可以可靠给出的答案是“因为 JLS 这么说”。引用:

该方法main必须声明为publicstaticvoid。它必须指定一个声明类型为数组的形式参数(第 8.4.1 节)String

于 2013-01-14T13:24:43.287 回答
2

好吧,反射是从 Java 1.1 开始引入的,所以最初的 Java 1.0 标准不能基于它们。他们可能有一些类似反射的代码只是为了引导,并且不知道在 Java 仍被称为 Oak 的时候它有多完整。

此外,这可能是从 C++ 继承的,然后是从 C 进一步继承的。虽然 C++ 也可以先构造一个应用程序对象并调用virtual main()它,但这可能看起来太复杂了,选择使用mainC 开发人员熟悉的简单的 .

于 2013-01-14T13:27:31.373 回答
1

因为当您运行程序时,运行时环境会查找带有签名的方法public static void main (String[] args)。即使支持反射,运行时仍然需要先调用一个类的main方法。

于 2013-01-14T13:24:45.330 回答
0

Public:为了让 JVM 能够访问 main 方法,它必须是公共的。

静态:因为它非常复杂,或者可能无法预见托管 main 方法的类的实例化标准,所以它被强制为静态,使 JVM 无需从类中创建对象即可调用它。

毕竟,在定义语言时需要一个明确的约定,如果没有这样的强制约束,JVM 设计人员可能会遇到麻烦。

于 2013-01-14T13:32:31.580 回答
0

public static void main(String []args)
1.中每个关键字的解释public
一定是public因为它不是你定义方法JVM的一部分。所以,它不应该是 2 .:不会构造任何对象来调用。并且 main 不依赖于. 3. :不会返回任何有用的信息给. 程序执行从开始,如果正常退出,则以.In 中的最后一条语句结束,在批次之间发生。 4. : 这只是一个专有名词,用来表示方法的重要性。 5. :传递给main的args是一个或多个单词,它们可能是一个classmainprivate
static
JVMmainclass
void
mainJVMmain()main
main

Array of Stringsint, float,charString. 上面的一切都可以表示为Strings

希望能帮助到你
于 2013-01-14T14:03:41.663 回答