Javamain方法的方法签名是:
main
public static void main(String[] args) { ... }
这种方法必须是静态的有什么原因吗?
该方法是静态的,否则会有歧义:应该调用哪个构造函数?特别是如果您的班级看起来像这样:
public class JavaClass{ protected JavaClass(int x){} public void main(String[] args){ } }
JVM应该调用new JavaClass(int)吗?它应该通过x什么?
new JavaClass(int)
x
如果不是,JVM 是否应该在JavaClass不运行任何构造方法的情况下进行实例化?我认为它不应该,因为这会使你的整个类成为特例——有时你有一个尚未初始化的实例,你必须在每个可以调用的方法中检查它。
JavaClass
对于 JVM 必须在调用入口点之前实例化一个类来说,有太多的边缘情况和歧义是有意义的。这就是为什么main是静态的。
我不知道为什么main总是被标记public。
public