一尘不染

终止Java程序

java

我找到了终止(关闭或停止)Java程序的方法。我找到了两个解决方案。

  1. 使用 return; 当我想退出或终止程序执行时,添加它。

  2. 使用 System.exit() ; 有时我用它。我从This Question中了解了 Sytem.exit()

所以,我对他们都了解一点。但是我仍然对它们的实际工作方式感到困惑。请检查以下代码…

public class Testing {

public static void main(String... str) {
    System.out.println(1);
    System.exit(0);
    System.out.println(2);
    return;
 }
}

我确定 2不会出现。我想知道为什么return;或其他代码可以在的语句下面写System.exit(0);以及真正的定义是什么return;因为对我来说,return没有任何变量或值,这是很奇怪的事情)?


阅读 348

收藏
2020-09-09

共1个答案

一尘不染

调用System.exit(0)(或与此有关的任何其他值)会导致Java虚拟机退出,从而终止当前进程。您传递的参数将是java进程将返回到操作系统的返回值。您可以从程序的任何位置进行此调用-
结果将始终相同-JVM终止。由于这只是在System类中调用静态方法,因此编译器不知道它将执行的操作,因此不会抱怨无法访问的代码。

return语句只是中止当前方法的执行。从字面上讲,这意味着 将控件返回到调用方法
。如果将方法声明为void(如您的示例中所示),则无需指定值,因为需要返回void。如果声明该方法返回特定类型,则必须指定要返回的值-
此值必须为指定的类型。

return仅当它在main正在执行的主类的方法内部时,才会导致该程序退出。如果尝试将代码放在其后,则编译器将抱怨无法访问的代码,例如:

public static void main(String... str) {
    System.out.println(1);
    return;
    System.out.println(2);
    System.exit(0);
}

不会使用大多数编译器进行编译-产生unreachable code指向第二个System.out.println调用的错误。

2020-09-09