终止一个Java程序

我find了终止(closures或停止)我的Java程序的方法。 我find了两个解决scheme。

  1. 使用return;
    当我想退出或终止我的程序执行,我补充一点。

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

调用System.exit(0) (或任何其他值)导致Java虚拟机退出,终止当前进程。 您传递的参数将是java进程返回到操作系统的返回值。 你可以在程序中的任何地方调用这个调用,结果总是一样的–JVM终止。 因为这只是在System类中调用一个静态方法,所以编译器不知道它会做什么 – 因此不会抱怨无法访问的代码。

return语句只是简单地中止当前方法的执行。 这实际上意味着将控制返回给调用方法 。 如果方法被声明为void (如你的例子),那么你不需要指定一个值,因为你需要返回void 。 如果方法被声明为返回一个特定的types,那么你必须指定要返回的值 – 而且这个值必须是指定的types。

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错误。

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

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

System.exit()终止JVM。 执行System.exit()后什么都没有。 返回通常用于退出方法。 如果返回types是无效的,那么你可以使用return; 但我认为在主要方法中不是一个好做法。 除非是无限循环或其他一些奇怪的执行stream程,否则您不必为终止程序做任何事情。

  1. System.exit()是一个导致JVM退出的函数。
  2. 返回只是将控件返回给调用函数。
  3. 返回8将返回控制和值8到调用函数。

什么是回报; 意思?

return; 真的意味着它没有任何返回void 。 而已。

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

这是允许的,因为编译器不知道调用System.exit(0)将终止JVM 。 编译器会给出一个警告 – 不必要的返回语句

  • 那么,第一个System.exit(0)是用来终止程序,并有下面的语句是不正确的,虽然编译器不会引发任何错误。
  • 简单的return; 在void返回types的方法中用于将执行控制权返回给其父方法。

所以回报 并不能真正终止你的java程序它只会终止你的java函数(void) 。 因为在你的情况下,函数是你的应用程序的主要function,返回; 也将终止该申请。 但是回报; 在你的例子是无用的,因为该函数将在这个返回后直接终止…

System.exit()将完全终止你的程序 ,它将closures任何打开的窗口。