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