【问题标题】:Who calls the main function in java?谁调用java中的main函数?
【发布时间】:2010-10-16 16:08:07
【问题描述】:
public static void main(String[] args) 
{
    boolean t=true;
    System.out.println("Before return");
    if(t) return;
    System.out.println("not execute");
}

在上面的代码中,当使用return 时,它应该返回调用主函数的函数。究竟是谁调用了main 函数?

【问题讨论】:

  • 您可以从另一个主方法调用一个主方法,也可以让启动器调用它。

标签: java


【解决方案1】:

Java 虚拟机。

【讨论】:

    【解决方案2】:

    Java 类在更大的上下文中执行(正如其他人所指出的那样,特定的 JVM)。以下是一些可能性:

    在所有情况下,main() 方法都是执行给定特定类的代码的规范入口点。来自java JVM 上的文档:

    描述

    java 工具启动一个 Java 应用程序。它通过启动 Java 运行时环境、加载指定的类并调用该类的 main 方法来完成此操作。方法声明必须如下所示:

       public static void main(String args[])
    

    该方法必须声明为 public 和 static,它不能返回任何值,并且它必须接受一个 String 数组作为参数。默认情况下,第一个非选项参数是要调用的类的名称。应使用完全限定的类名。如果指定了 -jar 选项,则第一个非选项参数是包含应用程序的类和资源文件的 JAR 归档的名称,启动类由 Main-Class 清单头指示。

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

    类名或 JAR 文件名后的非选项参数传递给主函数。

    javaw 命令与 java 相同,只是 javaw 没有关联的控制台窗口。当您不希望出现命令提示符窗口时,请使用 javaw。但是,如果由于某种原因启动失败,javaw 启动器将显示一个包含错误信息的对话框。

    你说:

    上面代码中使用return的时候应该返回到调用main函数的函数。

    可能没有任何其他调用main() 函数的Java 函数(实际上通常没有)。这是声明知名入口点的约定。如果启动 JVM 以运行您的类的 main() 方法,那么当 main() 返回时,JVM 将退出,除非在少数特殊情况下,例如有其他非守护线程正在运行或存在关闭挂钩。

    【讨论】:

    • 您对我的陈述的引用缺少我的限定条款:“除了少数特殊情况,例如有其他非守护线程正在运行或存在关闭挂钩。”这涵盖了您的担忧。
    【解决方案3】:

    这是一个很好的 example 通过 JNI_CreateJavaVM 调用 main()

    【讨论】:

      【解决方案4】:

      【讨论】:

        【解决方案5】:

        JVM 使用 main() 作为程序的起点,就像 C++ 中的 int main()

        【讨论】:

          【解决方案6】:

          同意上述声明,因为 JVM 调用 main 方法,因为它是任何必须加载才能执行该类的类的入口点。

          【讨论】:

            【解决方案7】:

            jvm启动主线程调用main方法。

            【讨论】:

              猜你喜欢
              • 2012-02-27
              • 2019-04-25
              • 2020-01-09
              • 1970-01-01
              • 1970-01-01
              • 2014-03-26
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多