java - 终止 Java 程序

标签 java

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

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

  2. 使用 System.exit()
    有时我用它。我从 this question 读到了 System.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没有任何变量或值)?

最佳答案

调用 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);
}

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

关于java - 终止 Java 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22452930/

相关文章:

java - 嵌套映射问题 : While clearing the inner map, 外部映射值也被清除

java - 找不到某些可绘制对象

java - 如何在 thymeleaf 中显示列表错误?

Java不发送HTTP POST请求

java - 将 Mon/yyyy 转换为日期

java - 将图标添加到菜单项

java - List.forEach 是用 Java 排序的吗?

java - Eclipse Java JTable 与表

java - JPA findby 过滤子字符串列表

java - jackson 2.0 Jersey 1.12