为什么Java中的main()方法总是静态的?

2025年5月12日 | 阅读 3 分钟

在Java中,main()方法在程序执行中起着至关重要的作用。main()方法是执行过程中首先遇到的方法,因此它是程序的入口点。我们不能修改main()方法的语法。唯一可以改变的是String数组参数的名称。main()方法的语法如下:


Why main() method is always static in Java

让我们将main()方法的语法分解成几个部分,并理解其中的每一个部分。

1) public

这并不难理解。它是main()方法的访问修饰符。我们使用public访问说明符创建main()方法,以便任何程序都可以执行它。因此,需要将main()方法定义为public,如果我们将其定义为非public,它将抛出以下错误:

TestMain.java

输出

Why main() method is always static in Java

2) static

static是我们用在main()方法中将其定义为静态的关键字。在Java运行时开始时,没有类的对象可用,因此,我们必须将main()方法定义为static。通过这样做,JVM可以加载类到主内存并调用main()方法。

因此,如果我们定义main()方法为非静态方法,JVM将无法调用它并抛出以下错误:

TestMain.java

输出

Why main() method is always static in Java

3) void

我们知道,每个方法都有一些返回类型,如String、Boolean、Integer等。Java的main()方法不返回任何内容,其返回类型是void。为了简化起见,main()方法不返回任何内容。程序将在执行完main()方法后终止,并且从main()方法返回任何内容都是无价值的,因为JVM将不对返回的对象做任何事情。

如果我们从main()方法返回任何内容,它将抛出以下错误:

TestMain.java

输出

Why main() method is always static in Java

4) main()

这是main()方法的名称。方法的名称是静态的,我们不能改变它。如果我们尝试更改方法名(),它将抛出以下错误:

TestMain.java

输出

Why main() method is always static in Java

5) String[] args 或 String args[]

Java的main()方法接受一个String数组类型的单个参数,也称为命令行参数。让我们举个例子来理解命令行参数是如何工作的。

TestMain.java

输出

Why main() method is always static in Java

定义main()方法为静态的原因

我们不能在不创建类实例的情况下调用一个方法,并且我们之前已经告诉过你,在JVM启动时,没有类的对象。我们将main()方法创建为静态,以便JVM可以加载类到主内存。

  • main()方法是每个Java程序的入口点。main()方法是必需的,因为编译器从这个入口点开始执行程序。
  • 如果允许main()方法为非静态,JVM需要实例化该类。
  • JVM可以使用类名轻松地调用静态方法,而无需创建类的实例。
  • 如上所述,main()方法应该是public、static,并且返回类型为void。如果我们不将其定义为public和static,或者从方法中返回某些内容,它肯定会抛出错误。