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