📜  Java中的main()函数是强制性的吗

📅  最后修改于: 2020-02-10 15:22:14             🧑  作者: Mango

这个问题的答案取决于您使用的Java版本。在JDK 7之前,main()函数在Java程序中不是必需的。

  • 您可以在静态块下编写完整的代码,并且可以正常运行。
  • 一旦在main()之前加载了类,就会首先执行静态块。该方法因此在main()被调用之前。main通常被声明为静态方法,因此Java不需要对象来调用main方法。
  • 当您给出运行命令时(即记事本下面提到的程序中的Java Test),编译器会认为Test是其中main()所在的类,并且由于编译器加载了main()方法,因此静态块已准备就绪被执行。因此在这里,它将首先运行静态块,然后将看不到main()。因此它将给出“ exception”,因为执行时会出现异常。但是,如果我们不希望发生异常,可以通过
    System.exit(0); 终止程序。

 
但是,从JDK7开始,main()函数是强制性的。编译器将首先验证main()是否存在。如果您的程序不包含main方法,则将收到错误 “在类中找不到main方法”。它将给出一个错误(字节代码验证错误,因为在它的字节代码中,main不存在),因为程序尚未运行。
注意:但这两个程序都将被编译,因为对于编译,我们不需要main()方法。

// 在JDK 7前本程序会被成功运行
public class Test
{
    // 静态块
    static
    {
        System.out.println("Hello User");
    }
}