为什么java中的main()是空的?

为什么java中的main()是空的?,java,Java,对于具有类似C语法的语言,我们声明main()方法以返回int或float值(或void)。在Java中是否可以从main()声明非void返回类型?如果没有,为什么不呢?这是否意味着Java程序不向操作系统返回任何值?您可以使用System.exit()返回一个int 返回除整数以外的任何内容都没有多大意义,因为操作系统需要整数。如果未返回任何内容,则默认值为0,表示正常。其他值通常用于表示错误或特殊情况。是关于同一主题的velocityreviews的有趣讨论: 亮点: 顺便说一下,这只是C

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

您可以使用System.exit()返回一个int

返回除整数以外的任何内容都没有多大意义,因为操作系统需要整数。如果未返回任何内容,则默认值为0,表示正常。其他值通常用于表示错误或特殊情况。

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

亮点:

顺便说一下,这只是C和C++中的坏风格而已。 这是main的错误签名,不是出于任何普遍原因 独立于编程语言。这是其中的一件事 不应该真正起作用,但可能会影响您的实现

在Java中,main返回void的原因是线程。C和C++都是 在多线程之前被设计为语言是一个广为人知的概念 后来,他们两人都把线移植到了他们身上。JAVA 从一开始就被设计为多线程环境 坦率地说,编写任何非平凡的Java应用程序都是不寻常的 这不会使用多个线程。所以一个程序运行的想法 从main的开始到结束是线性的,这有点过时了

作者

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

main()
方法必须确实具有
void
返回类型。从“执行-虚拟机启动”()上的

必须声明方法
main
公共
静态
无效
。它必须 接受一个单独的参数,该参数是 字符串数组

它接着在“执行-程序退出”()中描述程序何时退出:

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

  • 所有未连接的线程 守护进程线程终止
  • 一些线 调用类的
    exit
    方法
    运行时
    或类
    系统
    和退出 本规范不禁止操作 保安经理
换句话说,程序可能在
main
方法完成之前或之后退出;因此,来自
main
的返回值将毫无意义。 如果希望程序返回状态代码,请调用以下方法之一(请注意,所有三个方法都不会正常返回):

  • -相当于
    Runtime.getRuntime().exit(状态)
  • -通过启动关闭序列终止当前运行的JVM(运行所有已注册的,如果需要)。完成此操作后,JVM将停止
  • -强制终止当前运行的JVM

在这三种方法中,
System.exit()
是终止JVM的常规且最方便的方法。

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


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

Peter,你能为我澄清一下吗(目前正在探索java多线程)。。。是否只有deamon线程不允许超过main()?@Max:no,main()方法无法控制JVM。当JVM启动时,它将运行main()方法,但当main()完成时,并不意味着JVM终止。JVM继续执行所有线程,直到1)Runtime.exit()被调用,或2)所有正常(非守护进程)线程都已死亡。守护进程线程不计入第二种情况。换句话说。。。若main()方法生成一些普通线程,JVM将不会在main()完成时终止。如果main()没有生成任何线程,JVM将终止。如果main()只生成守护进程线程,JVM也会在main()完成时终止。这个答案对我来说是所有答案中最有意义的。在什么语言中
main
返回浮点值?正如对这个问题投票最多的答案所指出的,这是有技术原因的,因此它主要不是基于意见的。