为啥 Java 程序需要“main()”方法?

Posted

技术标签:

【中文标题】为啥 Java 程序需要“main()”方法?【英文标题】:Why does a Java program require a "main()" method?为什么 Java 程序需要“main()”方法? 【发布时间】:2011-07-10 07:27:48 【问题描述】:

这只是一个命名约定?为什么在从 shell 执行程序时不能调用任何方法,例如

$> java myPackage.MyClass.myOwnEntryPoint(String[] str)

【问题讨论】:

【参考方案1】:

main 方法是 java 程序用于运行 Java 应用程序(相对于小程序或其他东西)寻找的入口点。据我所知,没有办法告诉java 寻找不同的方法,所以这不仅仅是一个命名约定;如果你想让你的应用程序运行(无论如何通过标准的java 工具),你想给它一个带有适当签名的main 方法。 (您可以使用静态初始化程序玩游戏,但这完全是另一回事。)

main 这个名字继承自 C,但它不仅仅是一个约定。

【讨论】:

【参考方案2】:

是的,这是一个命名约定,继承自C。这样做的好处是,通过查看代码很容易找出哪个方法应该是main方法。

【讨论】:

不是只是一个约定,不是吗?我的意思是,当你运行程序时(通过java),这就是它所寻找的...... @T.J.克劳德:是的,这是真的。但是您可以编写自己的程序启动器,它会加载一个类并运行方法myPersonalMain()。这就是为什么它“只是一个约定”——尽管它是许多工具(不仅仅是java)使用的一个重要约定。 @T.J.:嗯,有不同种类的代码转换。破坏一些只会激怒其他程序员,而另一些则必须遵循才能使代码完全正常工作。后者的另一个例子是 setter 和 getter 的命名约定。 我明白你在说什么。对我来说,如果它被硬编码到像java 这样的绝对中心工具中,那不是约定,而是要求。 :-) 但是@sleske 有一个好点:您可以编写自己的程序启动器,使用不同的名称。

以上是关于为啥 Java 程序需要“main()”方法?的主要内容,如果未能解决你的问题,请参考以下文章

java中的main方法为啥接受无效的String args

JAVA里面的main函数为啥要定义为static的?

为啥使用Junit Test而不用普通java main方法来完成测试?

为啥手机编译器class后面默认是Main呢

为啥 main 方法需要是静态的? [复制]

java新手为啥java类中要有static静态方法?