为什么在java中的main()无效?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (9)

对于C语言语言的情况,我们声明main()方法返回一个int或float值(或void)。是否有可能在Java中从main()声明一个非void返回类型?如果不是,那为什么不呢?这是否意味着Java程序不会向操作系统返回任何值?

提问于
用户回答回答于

velocityreviews关于同一主题的有趣讨论:

突出:

顺便说一句,这在C和C ++中被认为是不好的风格,因为它是main 的错误签名,而不是独立于编程语言的任何通用原因。这是其中一件事实际上不应该起作用,但可能会影响您的实施。 在Java中,main返回void的原因是线程。C和C ++在多线程是众所周知的技术之前都被设计为语言,并且都在以后将线程嫁接到它们上面。Java从一开始就被设计成一个多线程环境,坦率地说,编写任何不使用多个线程的非平凡Java应用程序是不寻常的。所以程序从头到尾线性移动的想法有点过时了。

写的

www.designacourse.com最简单的方法来训练任何人...任何地方。Chris Smith - MindIQ公司首席软件开发人员/技术培训师

用户回答回答于

main()方法必须具有void返回类型。从“执行 - 虚拟机启动”(§12.1.4)的Java语言规范

该方法main必须声明 publicstaticvoid。它必须接受一个单一的参数,它是一个字符串数组。

它继续描述程序在“执行 - 程序退出”(§12.8)中何时退出:

当两件事中的一件发生时,程序终止其所有活动并退出

  • 所有不是守护线程的线程都会终止。
  • 有些线程调用exitRuntime或类的方法, System并且安全管理器不禁止退出操作。

换句话说,程序可以在main方法结束之前或之后退出; main因此返回值将是无意义的。如果您希望程序返回状态码,请调用以下方法之一(请注意,所有三种方法都不会正常返回):

其中三种System.exit()方法是终止JVM的常规和最方便的方法。

扫码关注云+社区