为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Java中的main()无效?

为什么Java中的main()无效?

慕侠2389804 2019-12-26 10:21:29
对于具有类似C语法的语言,我们声明main()方法以返回int或float值(或void)。是否可以在Java中从main()声明非无效的返回类型?如果没有,那为什么不呢?这是否意味着Java程序不向操作系统返回任何值?
查看完整描述

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的常规且最方便的方法。


查看完整回答
反对 回复 2019-12-26
?
ITMISS

TA贡献1871条经验 获得超8个赞

main具有voidas返回类型的方法的原因是,一旦main完成,就不一定意味着整个程序就完成了。如果main产生新线程,则这些线程可以保持程序运行。此时的返回类型main没有多大意义。

例如,这在Swing应用程序中很常见,该main方法通常在Swing线程上启动GUI,然后main完成...但是程序仍在运行。


查看完整回答
反对 回复 2019-12-26
  • 3 回答
  • 0 关注
  • 627 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信