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

时间:2008-11-04 10:21:45

标签: java jvm

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

5 个答案:

答案 0 :(得分:71)

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

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

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

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

  • main:程序启动
  • init:applet start
  • run:thread start

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

答案 1 :(得分:16)

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

具体来说,当Java虚拟机通过指定其类(通过使用java应用程序启动器)被告知运行应用程序时,它将查找main方法,其签名为{{ 1}}。

来自Sun的java command page

  

java 工具启动Java应用程序。它通过开始这样做   Java运行时环境,加载指定的类并调用它   class的主要方法。

     

该方法必须声明为public和static,不得返回任何方法   值,它必须接受public static void main(String[])数组作为参数。方法   声明必须如下所示:

String

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

    来自Chapter 12: Execution。的
  1. Java Language Specification, Third Edition 来自Chapter 5: Linking, Loading, Initializing
  2. Java Virtual Machine Specifications, Second Edition 来自A Closer Look at the "Hello World" Application
  3. Java Tutorials

    public static void main(String args[]) 方法是新Thread或实现Runnable接口的类的入口点。当Java Virutal Machine由run命令启动时,它不会被调用。

    由于javaThread本身不能由Java虚拟机直接运行,因此必须由Runnable方法调用。这可以通过在应用程序的Thread.start()方法中实例化Thread并调用其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的类的更多信息和示例,请参阅Java教程中的Defining and Starting a Thread


    Runnable方法是AppletJApplet中调用的第一种方法。

    当applet由浏览器的Java插件或applet viewer加载时,它将首先调用init方法。应该在此处执行使用applet所需的任何初始化。 Applet.init方法完成后,将调用init方法。

    有关何时调用applet的start方法的更多信息,请阅读Java教程中Life Cycle of an Applet处的applet生命周期。

    另请参阅:Java Tutorial中的How to Make Applets

答案 2 :(得分:3)

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

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

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

$ java Class
如果存在,

将在类“Class”中执行所述方法。

public void run() { ... }

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

答案 3 :(得分:2)

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

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

答案 4 :(得分:-2)

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