42

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

4

5 回答 5

78

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

当您启动 JVM 时,您指定一个要运行的类,它是main()您的程序启动的此类的 。

init()我假设您的意思是 JApplet 方法。当在浏览器中启动小程序init()时,指定小程序的方法作为第一业务顺序执行。

run()我假设你的意思是 Runnable 的方法。这是新线程启动时调用的方法。

  • main:程序开始
  • init:小程序启动
  • 运行:线程启动

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

于 2008-11-04T10:36:58.440 回答
20

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

具体来说,当 Java 虚拟机被告知通过指定其类(通过使用java应用程序启动器)来运行应用程序时,它将查找main具有public 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”应用程序

该方法是实现接口的新方法或类run的入口点。Java虚拟机在命令启动时不会调用它。ThreadRunnablejava

由于 a ThreadorRunnable本身不能由 Java 虚拟机直接运行,所以必须由Thread.start()方法调用。这可以通过实例化 aThread并在应用程序的方法中调用其start方法来完成main

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

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

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


init方法是AppletJApplet中调用的第一个方法。

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

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

另请参阅:如何通过 Java 教程制作小程序。

于 2008-11-04T11:38:02.373 回答
3

Java有一个特殊的静态方法:

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

当使用 java 命令行启动类时在类中执行:

$ java Class

如果存在,将在“Class”类中执行所述方法。

public void run() { ... }

是 Runnable 接口需要的,或者是在创建新线程时从 Thread 类继承的。

于 2008-11-04T10:27:38.427 回答
2

main()方法是 Java 应用程序的入口点。run()通常用于新线程或任务。

你在哪里写过run()方法,你在写什么样的应用程序(例如 Swing、AWT、控制台等)以及你的开发环境是什么?

于 2008-11-04T10:23:59.963 回答
-2

作为初学者,我导入 acm 包,在这个包中,run() 开始执行线程,init() 初始化 Java Applet。

于 2012-03-06T11:35:45.923 回答