📜  为什么 main 方法是静态的 (1)

📅  最后修改于: 2023-12-03 15:21:36.215000             🧑  作者: Mango

为什么 main 方法是静态的

在 Java 的编程中,当我们需要启动一个程序时,都会通过 main() 方法来实现。很多初学者往往不明白为什么 main() 方法需要被声明为 static,因此本文将为大家介绍其原因。

方法调用路径

在 Java 语言中,我们可以通过对象来调用所属的方法。当我们创建一个对象并调用其方法时,JVM 会为该对象分配一块内存空间,并通过该对象来寻找和调用该方法。

然而,当我们调用 main() 方法时,并没有任何对象被创建。这是因为启动 Java 程序时,并没有预先创建任何对象,因此也就不可能通过对象来调用方法了。

因此,为了能够在没有对象的情况下调用方法,Java 语言规定 main() 方法必须被声明为 static,这样可以直接通过类来调用该方法。

类成员与对象成员

在 Java 中,方法可以分为两种类型:类成员和对象成员。

类成员是指在类中使用 static 关键字声明的方法。这类方法属于类本身,不依赖于任何实例对象,因此我们可以通过类名直接调用该方法。

对象成员是指在类中没有使用 static 关键字声明的方法。这类方法依赖于实例对象,只有创建该类的实例对象后才能调用该方法。

main() 方法必须被声明为类成员,这是因为在启动 Java 程序时,还没有对该类的实例对象进行任何操作,因此只能通过类来调用 main() 方法。

示例代码

下面的示例代码演示了 main() 方法如何被调用以及为什么它必须被声明为 static

public class Main {
  public static void main(String[] args) {
    // do something
  }
}

在上述代码中,main() 方法被声明为 public static,这样我们就可以直接通过类名来调用该方法。

Main.main(new String[] {"arg1", "arg2"});

上述代码演示了直接通过类名来调用 main() 方法,并传递了一个字符串数组作为参数。

总结

本文介绍了为什么 main() 方法必须被声明为 static,以及类成员和对象成员的区别。在实际编码中,我们需要根据实际情况来选择声明类成员或对象成员,以确保程序的正确性和可读性。