[英]Terminating a Java Program
我找到了终止(关闭或停止)我的 Java 程序的方法。 我找到了两个解决方案。
使用回报;
当我想退出或终止我的程序执行时,我添加了这个。
使用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
错误。
因为System.exit()
只是编译器的另一种方法。 它不会提前阅读并确定整个程序将在那时退出(JVM 退出)。 您的操作系统或外壳程序可以读取在System.exit()
方法中传回的整数。 0
表示“程序退出并且一切正常”和任何其他值来通知发生错误是标准的。 由开发人员为任何用户记录这些返回值。
另一方面, return
是编译器非常熟悉的保留关键字。 return
返回一个值并结束当前函数的运行,将堆栈向上移动到调用它的函数(如果有)。 在您上面的代码中,它返回void
因为您没有提供任何要返回的内容。
System.exit() 终止 JVM。 System.exit() 执行后没有任何内容。 Return 通常用于退出方法。 如果返回类型为 void,则可以使用 return; 但我认为在 main 方法中这样做不是一个好习惯。 您不必为终止程序做任何事情,除非无限循环或其他一些奇怪的执行流程。
所以返回; 并没有真正终止您的 java 程序,它只是终止您的 java 函数 (void) 。 因为在您的情况下,该功能是您应用程序的主要功能,请返回; 也会终止申请。 但回报; 在您的示例中是无用的,因为无论如何该函数将在返回后直接终止......
System.exit() 将完全终止您的程序并关闭所有打开的窗口。
return;
用于void返回类型的方法中,将执行的控制权返回给其父方法。返回什么; 意思?
return;
真的意味着它不返回void
。 就是这样。
为什么回来; 或者其他代码可以写在System.exit(0)的语句下面;
这是允许的,因为编译器不知道调用System.exit(0)
将终止JVM
。 编译器只会给出警告 -不必要的 return 语句
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.