JVM如何使用“Main方法”启动Java程序?

时间:2010-12-15 03:58:20

标签: java

main不是java中的关键字。 JVM如何知道执行main方法作为任何程序的起点?

5 个答案:

答案 0 :(得分:12)

main不需要是java中的关键字,以便JVM在执行开始时查找它。与称为main的其他方法或变量没有冲突。这就是JVM规范的设计方式。它很可能是从c语言中借来的。

Java规范参考:keywordsinvoking main

答案 1 :(得分:10)

它只是在JLS中指定的。

  

12 Execution

     

...

     

通过加载指定的类然后在此指定的类中调用方法main来启动Java虚拟机。第§12.1节概述了执行main时涉及的加载,链接和初始化步骤,作为本章概念的介绍。更多部分指定了加载(§12.2),关联(§12.3)和初始化(§12.4)的详细信息。

     

...

     

12.1 Virtual Machine Start-Up

     

Java虚拟机通过调用某个指定类的方法main来开始执行,并向其传递一个参数,该参数是一个字符串数组。在本规范的示例中,第一个类通常称为Test

     

...

     

12.1.4 Invoke Test.main

     

最后,在完成类Test的初始化之后(在此期间可能发生了其他相应的加载,链接和初始化),调用main的方法Test。 / p>      

方法main必须声明为publicstaticvoid。它必须接受一个字符串数组的参数。

答案 2 :(得分:0)

它通过使用反射来调用此方法。您可以查看Java Web Start源代码,例如

答案 3 :(得分:0)

基本上每种语言都或多或少与其前身相似。在C语言中,它首先执行的是main(),但它不是必须始终执行的。也可以执行没有main方法的程序。所以,它只是首先调用main方法的惯例。

请检查:

Entry point for Java applications: main(), init(), or run()?

C program without a main function?

答案 4 :(得分:-2)

Main基本上是中心方法的通用指标,因此Java在提供公共静态时自动将其作为核心方法

public static void main