从哪里调用public static void main?

时间:2013-06-29 12:39:08

标签: java

我只是想知道我们的main方法实际调用的位置。 在eclipse中,当我们将它作为应用程序运行时,它会自动被调用。但是,如果我写另一个具有相同签名但名称不同的方法,则不会被称为

6 个答案:

答案 0 :(得分:7)

来自Java Virtual Machine的文档:

  

说明

     

java工具启动Java应用程序。这是通过开始一个   Java运行时环境,加载指定的类,并调用它   阶级的主要方法。方法声明必须如下所示   以下内容:

     

public static void main(String args [])

     

必须声明方法   公共和静态,它不能返回任何值,它必须接受一个   字符串数组作为参数。默认情况下,第一个非选项参数   是要调用的类的名称。完全限定的类名   应该使用。如果指定了-jar选项,则为第一个非选项   argument是包含类和资源的JAR存档的名称   应用程序的文件,启动类由   Main-Class清单标题。

     

Java运行时搜索启动类和其他类   在三组位置中使用:bootstrap类路径,   已安装的扩展和用户类路径。

     

传递类名或JAR文件名后的非选项参数   到主要功能。

     

javaw命令与java相同,除了javaw命令   没有关联的控制台窗口。当你不想要一个时使用javaw   命令提示符窗口出现。但是,javaw启动器将   如果某些启动失败,则显示包含错误信息的对话框   原因。

答案 1 :(得分:4)

The java Language Specification, 12.1中指定:

“Java虚拟机通过调用某个指定类的方法main来启动执行,并传递一个参数,这是一个字符串数组”

答案 2 :(得分:1)

由JVM自动调用,由JVMS(§5.2.Java虚拟机启动)指定:

  

Java虚拟机通过使用引导类加载器(第5.3.1节)创建一个初始类来启动,该类以依赖于实现的方式指定。然后Java虚拟机链接初始类,初始化它,并调用公共类方法void main(String[])

因此,main()很特别。具有相同签名但名称不同的其他方法不会自动由JVM调用。

答案 3 :(得分:0)

main方法是程序的入口点。程序启动时,它由JVM调用一次。

答案 4 :(得分:0)

对于* .jar文件,您可以通过在main()中提供Main-Class: classname来设置主类(即要调用其manifest的类)。在命令行调用中,您只需执行java Main_class_name。您可以在您选择的IDE中设置它们(例如,在运行中的'编辑配置'中的主类条目)菜单。在Eclipse或NetBeans中,我想,类似的东西。

答案 5 :(得分:0)

执行java类时 第1步:将类文件加载到JVM

第2步:JVM读取字节码

第3步:JVM搜索所有关键字

第4步:JVM搜索静态块

步骤5:JVM搜索异步块

步骤6:JVM创建一个HASH MAP,其中key为优先级

第7步:根据优先级JVM从上到下执行静态块,从上到下执行asysnchronous块

步骤8:此JVM在使用声明

搜索方法之后
public static void main (String args[])

并执行它

所以回答你的问题,当一个类被执行时,JVM调用main方法