繁体   English   中英

终止 Java 程序

[英]Terminating a Java Program

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

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

  2. 使用System.exit() ;
    有时我使用它。 我从这个问题中读到了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);的语句下面System.exit(0); 什么是return;真正定义return; 因为对我来说return没有任何变量或值很奇怪)?

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

return语句只是中止当前方法的执行。 它的字面意思是将控制权返回给调用方法 如果该方法声明为void (如您的示例中所示),则您不需要指定值,因为您需要返回void 如果该方法声明为返回特定类型,则您必须指定要返回的值 - 该值必须属于指定类型。

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

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

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

  1. System.exit()是一种导致 JVM 退出的方法。
  2. return只是将控制权返回给调用函数。
  3. return 8将控制和值 8 返回给调用方法。

因为System.exit()只是编译器的另一种方法。 它不会提前阅读并确定整个程序将在那时退出(JVM 退出)。 您的操作系统或外壳程序可以读取在System.exit()方法中传回的整数。 0表示“程序退出并且一切正常”和任何其他值来通知发生错误是标准的。 由开发人员为任何用户记录这些返回值。

另一方面, return是编译器非常熟悉的保留关键字。 return返回一个值并结束当前函数的运行,将堆栈向上移动到调用它的函数(如果有)。 在您上面的代码中,它返回void因为您没有提供任何要返回的内容。

System.exit() 终止 JVM。 System.exit() 执行后没有任何内容。 Return 通常用于退出方法。 如果返回类型为 void,则可以使用 return; 但我认为在 main 方法中这样做不是一个好习惯。 您不必为终止程序做任何事情,除非无限循环或其他一些奇怪的执行流程。

所以返回; 并没有真正终止您的 java 程序它只是终止您的 java 函数 (void) 因为在您的情况下,该功能是您应用程序的主要功能,请返回; 也会终止申请。 但回报; 在您的示例中是无用的,因为无论如何该函数将在返回后直接终止......

System.exit() 将完全终止您的程序并关闭所有打开的窗口。

  • 好吧,首先 System.exit(0) 用于终止程序并且在它下面的语句是不正确的,尽管编译器没有抛出任何错误。
  • 简单的return; 用于void返回类型的方法中,将执行的控制权返回给其父方法。

返回什么; 意思?

return; 真的意味着它不返回void 就是这样。

为什么回来; 或者其他代码可以写在System.exit(0)的语句下面;

这是允许的,因为编译器不知道调用System.exit(0)将终止JVM 编译器只会给出警告 -不必要的 return 语句

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM