网友:有没有一段代码,看起来简单,实则威力无穷 程序员:有啊
话不多说,直接上图
代码:System.exit(0);
这句代码,很简单,但是也非常暴力。就是结束整个程序。
1、下面先演示下不加上这个语句:
然后控制台输出两个println;
2、现在加这句代码放在中间
然后执行的效果就是:
3、现在把语句放在开头:
执行:
然后什么都没有了。显示为空。
————————————
下面来看一下,exit这个静态方法:
小编也是一名从事了6年java开发的全栈工程师,花了近一个月整理了一份较适合18年学习的java干货,送给每一位java小伙伴,加Q群领取:818464711
/**
* Terminates the currently running Java Virtual Machine. The
* argument serves as a status code; by convention, a nonzero status
* code indicates abnormal termination.
* <p>
* This method calls the <code>exit</code> method in class
* <code>Runtime</code>. This method never returns normally.
* <p>
* The call <code>System.exit(n)</code> is effectively equivalent to
* the call:
* <blockquote><pre>
* Runtime.getRuntime().exit(n)
* </pre></blockquote>
*
* @param status exit status.
* @throws SecurityException
* if a security manager exists and its <code>checkExit</code>
* method doesn't allow exit with the specified status.
* @see java.lang.Runtime#exit(int)
*/
public static void exit(int status) {
Runtime.getRuntime().exit(status);
}
看了这段代码,你就会发现,这个是有一个静态参数的,如果是非0表示非正常退出,如果是0表示是正常退出。
下面来总结一下,这个方法:
1、System.exit(0)是将你的整个虚拟机里的内容都停掉了 ,而dispose()只是关闭这个窗口,但是并没有停止整个application exit() 。无论如何,内存都释放了!也就是说连JVM都关闭了,内存里根本不可能还有什么东西
2、System.exit(0)是正常退出程序,而System.exit(1)或者说非0表示非正常退出程序
3、System.exit(status)不管status为何值都会退出程序。和return 相比有以下不同点:return是回到上一层,而System.exit(status)是回到最上层
示例
在一个if-else判断中,如果我们程序是按照我们预想的执行,到最后我们需要停止程序,那么我们使用System.exit(0),而System.exit(1)一般放在catch块中,当捕获到异常,需要停止程序,我们使用System.exit(1)。这个status=1是用来表示这个程序是非正常退出。