Java方法的方法签名是:
public static void main(String[] args) {
...
}
Is there a reason why this method must be static?
Java方法的方法签名是:
public static void main(String[] args) {
...
}
Is there a reason why this method must be static?
该方法是静态的,因为否则会有歧义:应该调用哪个构造函数?尤其是如果你的班级看起来像这样:
public class JavaClass{
protected JavaClass(int x){}
public void main(String[] args){
}
}
JVM应该呼叫new JavaClass(int)
吗?它应该被认为是x
吗?
如果不是,JVM是否应该在不运行任何构造函数方法的情况下实例化JavaClass
?我认为不应该,因为这将是整个类的特殊情况——有时你有一个尚未初始化的实例,你必须在每个可以调用的方法中判断它.
对于JVM来说,在调用入口点之前必须实例化一个类,有太多的边缘情况和模糊性,这是没有意义的.这就是为什么main
是静态的.
我不知道为什么main
总是标public
.