【问题标题】:Where can the Java main function be foundJava的main函数在哪里可以找到
【发布时间】:2013-07-20 06:14:49
【问题描述】:

public static void main(String[] args) 是 Java 提供的某个类的内置函数还是用户定义的或重写的函数?如果它是在某个接口或类中声明或定义的,在哪里可以找到它的声明?

【问题讨论】:

    标签: java main


    【解决方案1】:

    JLS 12

    Java 虚拟机通过调用某个指定类的 main 方法开始执行,并传递给它一个参数,该参数是一个字符串数组。

    每个Java应用程序都应该有一个main()方法,JVM会在启动应用程序时寻找main()方法。这是执行开始的地方。不,它不是内置的,您在类中定义 main() 方法,该方法成为您应用程序的起始执行点。 main() 方法必须是publicstatic,返回void,并接受一个参数:String 数组。任何具有这种main() 方法的类都可以用作Java 应用程序的起点。

    JVM spec 5.2:

    Java 虚拟机通过使用引导类加载器(第 5.3.1 节)创建一个初始类来启动,该类以依赖于实现的方式指定。 Java 虚拟机然后链接初始类,对其进行初始化,并调用公共类方法 void main(String[])。调用此方法会驱动所有进一步的执行。 执行构成 main 方法的 Java 虚拟机指令可能会导致链接(并因此创建)其他类和接口,以及调用其他方法。

    【讨论】:

    • @The New Idiot,"Java 虚拟机然后链接初始类,对其进行初始化,并调用公共类方法 void main(String[])。"- 在这里初始化是否意味着 Java虚拟机为类的静态变量分配内存,运行静态块或其他什么?“在调用方法 public static void main (String[]) 之前初始化类”是什么意思?请具体。
    • @ChandanKumar 请更加积极地阅读 JLS 和 google search
    【解决方案2】:

    它不是由任何接口定义的,语言规范规定它是 JRE 在开始运行时查找的函数。

    【讨论】:

      【解决方案3】:

      它独立于您在答案中指定的所有内容。当您通过调用java MyClass 调用解释器时,您的JVM 将尝试在您编译的MyClass 代码(The method main must be declared public, static, and void. It must specify a formal parameter whose declared type is array of String) 中找到带有签名public static void main(String[] args) 的方法。口译将从那里开始。它不是用户定义的,而是Java Language Specification 制定的一种规范。

      更多参考 - Check Here.

      【讨论】:

        【解决方案4】:

        public static void main(String[]args){}

        每个java应用程序的main函数都必须声明。因为当我们运行一个应用程序时,JVM会寻找main函数。而main函数不是内置的。我们也调用main main函数作为应用程序的起点

        Public :它是一个访问说明符。它定义了谁可以访问此方法。

        静态:无需创建Class实例即可访问。

        Void : 返回类型。

        main:方法的名称。 JVM 会搜索此方法名称作为应用程序的起点。

        String args[] : main 方法的参数。

        【讨论】:

          猜你喜欢
          • 2016-02-07
          • 1970-01-01
          • 2018-12-26
          • 2016-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-25
          • 1970-01-01
          相关资源
          最近更新 更多