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


静态 − 如果您声明一个静态的方法、子类、块或变量,它将与类一起加载。

在 Java 中,每当我们需要调用一个(实例)方法时,我们都应该实例化(包含它的)类并调用它。如果我们需要在不实例化的情况下调用一个方法,它应该为静态的。此外,静态方法与类一起加载到内存中。

对于 main 方法,它由 JVM 直接调用,因此无法通过实例化其类来调用它。并且,它应该与类一起加载到内存中并可供执行。因此,main 方法应该是静态的。

当 main 方法是非静态时

public static void main(String ar[]) 方法是 Java 中执行的入口点。当我们运行一个 .class 文件时,JVM 会搜索 main 方法并逐行执行其内容。

您可以在程序中编写不带 static 修饰符的 main 方法,程序会在不出现编译错误的情况下进行编译。但是,在执行时,JVM 不会将此新方法(不带 static)视为程序的入口点。

它会搜索 public、static、返回类型为 void 且参数为字符串数组的 main 方法。

public static int main(String[] args){
}

如果找不到这样的方法,则会生成运行时错误。

示例

在下面的 Java 程序中,在 Sample 类中,我们有一个 main 方法,它是 public 的,不返回任何值 (void),并接受一个字符串数组作为参数。但是,它不是静态的。

 在线演示

import java.util.Scanner;
public class Sample{
   public void main(String[] args){
      System.out.println("This is a sample program");
   }
}

输出

执行此程序时,会生成以下错误 -

Error: Main method is not static in class Sample, please define the main method
as:public static void main(String[] args)

更新时间: 2020-06-29

2K+ 次查看

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告