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

静态-如果您声明方法,子类,块或静态变量,则将其与类一起加载。

在Java中,只要需要调用(实例)方法,就应该实例化(包含它的)类并调用它。如果我们需要不实例化地调用方法,则它应该是静态的。此外,静态方法与类一起被加载到内存中。

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

当主要方法为非静态时

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

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

它搜索主要方法,该方法是公共的,静态的,返回类型为void,并将String数组作为参数。

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

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

示例

在以下Sample类的Java程序中我们有一个main方法,该方法是public,不返回任何值(无效),并接受String数组作为参数。但是,不是静态的。

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)