main 函数不返回任何内容。为什么?
对于 C/C++ main() 必须始终返回一个整数(零表示成功,非零表示失败)。当程序运行时,我可以理解这一点,它变成了一个进程,每个进程都应该有一个退出状态,我们通过执行echo $获得退出状态?从 shell 在过程结束后。
现在我不明白为什么main方法在Java中不返回任何内容?它是否与程序在JVM上运行并且JVM进程可以返回退出状态的事实有关?
请澄清。
谢谢,
罗杰
对于 C/C++ main() 必须始终返回一个整数(零表示成功,非零表示失败)。当程序运行时,我可以理解这一点,它变成了一个进程,每个进程都应该有一个退出状态,我们通过执行echo $获得退出状态?从 shell 在过程结束后。
现在我不明白为什么main方法在Java中不返回任何内容?它是否与程序在JVM上运行并且JVM进程可以返回退出状态的事实有关?
请澄清。
谢谢,
罗杰
当多线程已经是一件常见的事情时,java说(通过设计)“再见”,当“main”返回时程序就完成了。这就是没有返回值的原因。正如其他人所说,当您想使用返回码退出时,请使用。System.exit
如果单线程 java 应用程序的 main 方法终止,则应用程序将以退出代码 0 终止。如果您需要另一个退出代码,也许是为了指示错误,您可以放置
System.exit(yourNumberHere);
代码中的任何位置(尤其是在 main 方法之外)。
对于多线程应用程序来说,这是不同的,在多线程应用程序中,您必须从外部使用 kill -9
内部的 System.exit
来停止 JVM。
下面是一个快速示例,其中 main 的终止不会停止应用程序(典型的服务或守护程序行为):
public static void main(String args[]) {
Thread iWillSurvive = new Thread(new Runnable() {
public void run() {
while(true) {
// heat the CPU
}
}
});
iWillSurvive.start();
}
备注:当然,当线程的 run 方法(或主线程中的 main 方法)终止时,它将终止。在这种情况下,当所有线程都终止时,JVM将以退出代码0终止(这使我们回到最初的问题)。希望大家现在都快乐。