62 java
对于具有类似C语法的语言,我们声明main()方法返回int或float值(或void).是否可以在Java中从main()声明非void返回类型?如果没有,那么为什么不呢?这是否意味着Java程序不会向操作系统返回任何值?
Zac*_*ena 68
该main()方法必须确实具有void返回类型.来自"执行 - 虚拟机启动"(第12.1.4节)的Java语言规范:
该方法
main必须声明public,static和void.它必须接受一个字符串数组的参数.
它继续描述程序何时退出"执行 - 程序退出"(§12.8):
程序会终止其所有活动,并在发生以下两种情况之一时退出:
- 所有不是守护程序线程的线程都会终止.
- 某些线程调用
exit类Runtime或类的方法,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的传统和最方便的方法.
Nic*_*lai 27
这是velocityreviews关于同一主题的有趣讨论:
突出:
顺便说一下,这在C和C++中被认为是不好的风格,因为它是main 的错误签名,而不是独立于编程语言的任何普遍原因.这是其中一个不应该起作用的东西,但可能在你的实现上.
在Java中,main返回void的原因是线程.在多线程是一种众所周知的技术之前,C和C++都被设计为语言,并且两者都在以后将线程移植到它们上面.Java从一开始就被设计为一个多线程环境,坦率地说,编写任何不使用多个线程的非平凡Java应用程序是不常见的.因此,程序从主要开始到结束线性移动的想法有点过时了.
写的
www.designacourse.com培训任何人的最简单方法......无处不在.Chris Smith - 首席软件开发人员/技术培训师MindIQ Corporation
Pet*_*aný 23
该main方法具有void返回类型的原因是一旦main完成,它不一定意味着整个程序完成.如果main生成新线程,那么这些线程可以保持程序运行.此时的返回类型main没有多大意义.
例如,这在Swing应用程序中非常常见,其中该main方法通常在Swing线程上启动GUI,然后main完成......但程序仍在运行.
您可以使用System.exit()返回一个int.
返回除整数之外的任何内容都没有多大意义,因为操作系统需要一个整数.如果没有返回任何内容,则默认值为0,表示正常.其他值通常用于指示错误或特殊条件.
| 归档时间: |
|
| 查看次数: |
32800 次 |
| 最近记录: |