📜  Java中的主要方法是强制性的吗?

📅  最后修改于: 2022-05-13 01:55:06.772000             🧑  作者: Mango

Java中的主要方法是强制性的吗?

这个问题的答案取决于您使用的Java版本。在 JDK 7 之前, Java程序中的 main 方法不是强制性的。

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

但是,从 JDK7 开始, main 方法是强制性的。编译器将首先验证 main() 是否存在。如果你的程序不包含 main 方法,那么你会得到一个错误“main method not found in the class”。它将给出错误(字节码验证错误,因为在它的字节码中,main 不存在)而不是异常,因为程序尚未运行。

注意:-但是,这两个程序都会被编译,因为编译我们不需要 main() 方法。

// This program will successfully run
// prior to JDK 7
public class Test 
{
    // static block
    static
    {
        System.out.println("Hello User");
    }
}

下面是输出的屏幕截图,可帮助您实际可视化相同的内容。我已经在记事本上运行了这个程序,这样你就可以理解为什么这个异常在最新版本中变成了错误。

  • 如果在 JDK 7 之前运行

    以Java 6 版本输出。

  • 如果在 JDK 7,8 等上运行……

    Java 7 中的输出