Java 应用程序的入口点:main()、init() 或 run()?

2022-09-01 01:19:29

到目前为止,我一直在使用方法在Java中执行我的代码。何时/何可能想要使用或代替?public void run() {}main()init()run()


答案 1

这是一个奇怪的问题,因为它不应该是一个选择的问题。

启动 JVM 时,指定要运行的类,程序启动的正是该类。main()

通过,我假设你指的是JApplet方法。在浏览器中启动小程序时,指定小程序的方法将作为第一个业务顺序执行。init()init()

通过 ,我假设你指的是 Runnable 的方法。这是启动新线程时调用的方法。run()

  • 主:程序启动
  • 初始化:小程序启动
  • 运行:线程启动

如果 Eclipse 正在运行你的方法,即使你没有 ,那么它正在做一些奇怪的、非标准的事情,但并非不可行。也许你应该发布一个你一直以这种方式运行的示例类。run()main()


答案 2

该方法是 Java 应用程序的入口点。main

具体来说,当Java虚拟机被告知通过指定其类(通过使用应用程序启动器)来运行应用程序时,它将查找签名为.javamainpublic static void main(String[])

从 Sun 的 java 命令页

Java 工具启动一个 Java 应用程序。它通过启动 Java 运行时环境、加载指定的类并调用该类的 main 方法来实现此目的。

该方法必须声明为 public 和 static,它不能返回任何值,并且它必须接受数组作为参数。方法声明必须如下所示:String

public static void main(String args[])

有关如何执行 Java 应用程序的其他资源,请参阅以下来源:

  1. 第 12 章:Java 语言规范的执行,第三版
  2. 第 5 章:从 Java 虚拟机规范链接、加载和初始化,第二版
  3. 仔细看看 Java 教程中的“Hello World”应用程序

该方法是新 Thread 或实现 Runnable 接口的类的入口点。当 Java Virutal Machine 通过命令启动它时,它不会被 Java Virutal Machine 调用。runjava

由于 或 本身不能由 Java 虚拟机直接运行,因此必须由该方法调用。这可以通过实例化 a 并在应用程序的方法中调用其方法来实现:ThreadRunnableThread.start()Threadstartmain

public class MyRunnable implements Runnable
{
    public void run()
    {
        System.out.println("Hello World!");
    }

    public static void main(String[] args)
    {
        new Thread(new MyRunnable()).start();
    }
}

有关如何启动 的子类或实现类的更多信息和示例,请参阅 Java 教程中的定义和启动线程ThreadRunnable


该方法是在小程序JApplet 中调用的第一个方法。init

当浏览器的 Java 插件或小程序查看器加载小程序时,它将首先调用该方法。使用小程序所需的任何初始化都应在此处执行。方法完成后,将调用该方法。Applet.initinitstart

有关何时调用小程序方法的更多信息,请阅读 Java 教程中的小程序生命周期中有关小程序生命周期的信息。init

另请参见:如何制作 Java 教程中的小程序


推荐