我知道我们可以在没有main()方法的情况下成功编译和运行java程序,但为什么我们仍然需要java主类中的main()方法?
答案 0 :(得分:9)
每个Java应用程序都必须包含一个main方法,其签名如下所示:
public static void main(String[] args)
主要方法如何被调用
Java语言中的main方法类似于C和C ++中的main函数。当Java解释器执行应用程序时(通过在应用程序的控制类上调用),它通过调用类的main方法开始。然后main方法调用运行应用程序所需的所有其他方法。
如果您尝试在没有main方法的类上调用Java解释器,则解释器拒绝编译您的程序并显示类似于以下内容的错误消息:
In class NoMain: void main(String argv[]) is not defined
主要方法的参数
从下面的代码片段中可以看出,main方法接受一个参数:一个String类型的元素数组。
public static void main(String[] args)
此数组是运行时系统将信息传递给应用程序的机制。数组中的每个String称为命令行参数。命令行参数允许用户影响应用程序的操作,而无需重新编译它。例如,排序程序可能允许用户使用此命令行参数指定数据按降序排序:
-descending
了解更多信息
http://journals.ecs.soton.ac.uk/java/tutorial/getStarted/application/main.html
答案 1 :(得分:6)
当程序开始运行时,它必须从某个地方开始执行。那个地方被称为main
。
答案 2 :(得分:6)
引用Java Language Specification(JLS)“A Java virtual machine starts execution by invoking the method main of some specified class, passing it a single argument, which is an array of strings
”
现在是执行开始的主要方法的典型定义
public static void main(String[] args)
public
- 意思应该可以从任何地方访问
static
- 在没有实例的情况下应该是静态可访问的(因为JVM启动时,它没有包含main方法的类的实例,因此是静态的)。
void
- 返回无效。
因此,一个main()方法在JVM中被“硬编码”,告诉它它是一个起点。
答案 3 :(得分:5)
您可以在没有main
方法的情况下编译任何Java类,但如果没有main()
方法 * ,则无法运行独立应用程序。
main
方法是定义为在应用程序开始时调用的方法。没有它,就没有地方可以开始运行了。
*嗯,是丑陋的黑客,你可以做到,但这是作弊
答案 4 :(得分:2)
main()是应用程序的起点。当应用程序启动时,此函数首先从代码中进行评估。它负责运行您的应用程序。
答案 5 :(得分:1)
.java
文件).class
文件.class
文件由JVM负责
b)之后,JVM中的解释器要读取代码。在一堆代码中,JVM的问题从哪里开始?
答案:为解决此问题,我们提供了main
关键字作为JVM在该方法中开始执行的线索。