到目前为止,我一直在使用public void run() {}
方法在Java中执行我的代码。何时/为什么可能想要使用main()
或init()
而不是run()
?
这是一个特殊的问题,因为它不应该是一个选择问题。
启动JVM时,指定要运行的类,它是程序启动时此类的main()
。
通过init()
,我假设你的意思是JApplet方法。在浏览器中启动applet时,指定applet的init()
方法将作为第一个业务顺序执行。
通过run()
,我假设你的意思是Runnable的方法。这是启动新线程时调用的方法。
如果Eclipse运行你的run()
方法,即使你没有main()
,那么它正在做一些特殊和非标准的事情,但不是不可行的。也许您应该发布一个以这种方式运行的示例类。
main
方法是Java应用程序的入口点。
具体来说,当Java虚拟机通过指定其类(通过使用java
应用程序启动器)被告知运行应用程序时,它将查找具有main
签名的public static void main(String[])
方法。
来自Sun的java
command page:
java工具启动Java应用程序。它通过启动Java运行时环境,加载指定的类以及调用该类的main方法来实现此目的。
该方法必须声明为public和static,它不能返回任何值,并且必须接受
String
数组作为参数。方法声明必须如下所示:public static void main(String args[])
有关如何执行Java应用程序的其他资源,请参阅以下来源:
run
方法是新Thread
或实现Runnable
接口的类的入口点。当它由java
命令启动时,Java Virutal Machine不会调用它。
由于Thread
或Runnable
本身不能由Java虚拟机直接运行,因此必须通过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
的子类或实现Runnable
的类的示例,请参阅Java教程中的Defining and Starting a Thread。
init
方法是在Applet或JApplet中调用的第一种方法。
当applet由浏览器的Java插件或applet viewer加载时,它将首先调用Applet.init
方法。应该在此处执行使用applet所需的任何初始化。在init
方法完成后,调用start
方法。
有关何时调用applet的init
方法的更多信息,请阅读Java教程中的Life Cycle of an Applet中applet的生命周期。
另请参阅:Java Tutorial中的How to Make Applets。
Java有一个特殊的静态方法:
public static void main(String[] args) { ... }
当使用java命令行启动类时,在类中执行:
$ java Class
如果它存在,将在类“Class”中执行所述方法。
public void run() { ... }
Runnable接口需要,或者在创建新线程时从Thread类继承。
main()
方法是Java应用程序的入口点。 run()
通常用于新线程或任务。
你在哪里编写run()
方法,你在写什么样的应用程序(例如Swing,AWT,控制台等)以及你的开发环境是什么?
作为初学者,我导入了acm包,在这个包中,run()开始执行一个线程,init()初始化Java Applet。