3 回答
TA贡献1821条经验 获得超6个赞
该main()方法确实必须具有void返回类型。从Java语言规范中的“执行-虚拟机启动”(第12.1.4节)中:
该方法main必须声明 public,static和void。它必须接受单个参数,该参数是字符串数组。
它继续描述程序何时在“执行-程序退出”(第12.8节)中退出:
程序终止所有活动并在发生以下两种情况之一时退出:
不是守护程序线程的所有线程都终止。
某些线程调用exitclass Runtime或class 的方法, System安全管理器不禁止退出操作。
换句话说,程序可能在main方法完成之前或之后退出;main因此,返回值将毫无意义。如果要让程序返回状态码,请调用以下方法之一(请注意,这三个方法都不会正常返回):
System.exit(int status) - 相当于 Runtime.getRuntime().exit(status)
Runtime.exit(int status)-通过启动其关闭序列来终止当前正在运行的JVM(如有必要,运行所有已注册的关闭钩子和未调用的终结器)。完成此操作后,JVM将停止。
Runtime.halt(int status) -强制终止当前正在运行的JVM。
在这三种中,这System.exit()是终止JVM的常规且最方便的方法。
TA贡献1871条经验 获得超8个赞
main
具有void
as返回类型的方法的原因是,一旦main
完成,就不一定意味着整个程序就完成了。如果main
产生新线程,则这些线程可以保持程序运行。此时的返回类型main
没有多大意义。
例如,这在Swing应用程序中很常见,该main
方法通常在Swing线程上启动GUI,然后main
完成...但是程序仍在运行。
添加回答
举报