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

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

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

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

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

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

  • 主要:程序启动
  • init:小程序启动
  • 运行:线程启动

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

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

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

从Sun的java命令页面 :

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

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

 public static void main(String args[]) 

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

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

run方法是新Thread或实现Runnable接口的类的入口点。 它由java命令启动时不被Java Virutal Machine调用。

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

 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方法是在Applet或JApplet中调用的第一个方法。

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

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

另请参阅: 如何从Java教程中制作小程序 。

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

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

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

 $ java Class 

会在类“Class”中执行该方法。

 public void run() { ... } 

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

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

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

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