我是java的初学者我想知道为具有main函数的类创建的类文件与为没有main函数的类创建的类文件之间的区别。我们可以创建一个没有main函数的类,并且能够编译它,以便生成的类文件之间的区别。它可能看起来像一个愚蠢的问题,但我只是想知道答案。
提前谢谢
答案 0 :(得分:4)
对于具有public static void main(String ..args)
的一个类,没有特殊的字节码,该方法的编译方式与任何其他方法相同。
不同之处在于Java虚拟机(而不是编译器),whose specification说明了这一点:
Java虚拟机通过使用引导类加载器(第5.3.1节)创建一个初始类来启动,该类以依赖于实现的方式指定。然后,Java虚拟机链接初始类,初始化它,并调用公共类方法void main(String [])。
答案 1 :(得分:2)
编译器没有区别。
在编译的字节码中是方法。
如果有
public static void main(String[] args){}
您将获得一个Class,可以通过调用
启动java ClassName
只是一种约定,即如果由Java调用,则启动main方法。
<强>更新强>
在Java 7之前,你可以像这样启动JavaClass(没有main方法):
//Don't use this
public class RunnableNoMain{
static { new RunnableNoMain(); } //creates an instance.
}
静态初始化程序将创建实例并执行代码。之后,会有NoSuchMethodException(找不到主要的)