关于java:为什么main方法需要是静态的?

Why main method needs to be static?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Why is the Java main method static?

Java支持反射还是Java需要主方法静态为什么?

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

感谢您对此的评论。


唯一可靠的答案是"因为捷豹路虎这么说"。报价:

The method main must be declared public, static, and void. It must specify a formal parameter (§8.4.1) whose declared type is array of String.


由于Java 1.1只引入了反射,所以最初的Java 1标准不能基于它们。他们可能有一些类似反射的代码来引导,而且在Java仍然被称为橡树的时候还不知道它是多么的完整。

此外,这可能是从C++继承而来的,并且继承了C。C++还可以首先构建一个应用程序对象,并在其上调用EDCOX1×2,这可能看起来太复杂了,选择是使用一个简单的EDCOX1(1),熟悉C开发人员。


因为运行程序时,运行时环境会查找签名为public static void main (String[] args)的方法。即使支持reflexion,运行时仍需要首先调用类"EDOCX1"〔1〕方法。


说明public static void main(String []args)中的每个关键字1.public号:它必须是public,因为JVM不是class的一部分,您在这里定义main方法,所以它不应该是private。2、static号:JVM不会构造任何对象来调用themain。而MAIN并不依赖于class。3.void号:main不会向JVM返回任何有用的信息。程序执行从main()开始,如果有正常退出,则以main中的最后一条语句结束。在批之间进行。4.main号:它只是用来表示方法重要性的专有名词。5.江户十一〔21〕号:传递给主体的参数是一个或多个单词,它们可以是intfloatcharString。上面的一切都可以用Strings表示。

Hope it helps


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

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

毕竟,在定义一种语言时,您需要一个明确的契约,如果没有这种强制约束,事情可能会给JVM设计人员带来麻烦。