小编典典

为什么Java main 方法是静态的?

all

Javamain方法的方法签名是:

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

这种方法必须是静态的有什么原因吗?


阅读 149

收藏
2022-03-10

共1个答案

小编典典

该方法是静态的,否则会有歧义:应该调用哪个构造函数?特别是如果您的班级看起来像这样:

public class JavaClass{
  protected JavaClass(int x){}
  public void main(String[] args){
  }
}

JVM应该调用new JavaClass(int)吗?它应该通过x什么?

如果不是,JVM
是否应该在JavaClass不运行任何构造方法的情况下进行实例化?我认为它不应该,因为这会使你的整个类成为特例——有时你有一个尚未初始化的实例,你必须在每个可以调用的方法中检查它。

对于 JVM 必须在调用入口点之前实例化一个类来说,有太多的边缘情况和歧义是有意义的。这就是为什么main是静态的。

我不知道为什么main总是被标记public

2022-03-10