System.exit()和return的区别

以前在论坛上看过大家对这个问题的讨论,今天又看到这个问题,于是把大伙的精华总结到一块:

system.exit(0):

是方法调用,在程序的任何地方都会显式表明JVM进程要退出系统了,返回值为0,可以通过%errorlevel%来取得。

return:

是一个关键字,表明返回调用当前方法的方法中。 如果是在main中,调用它的方法就是系统了,在单线程时也可以起到退出JVM的作用,但没有返回值,存在多线程的话main线程并不能保证JVM退出.,因为要所有的线程都结束才行,如果是在其他地方,这个语句只能返回上级调用中。

即在非程序入口方法中,则System.exit(0)直接终止程序,就算后面有代码也不执行了,而return则返回至调用该方法的地方,如果后面还有代码则继续执行。

这个在main()中的区别:
当用return返回时,main()并不能立即运行结束,而用System.exit(数值);(system.exit(0)表示程序正常退出,system.exit(1)表示非正常退出,都没有返回值))时,main()将立即无条件的结束
如:main()中代码

就是说在main方法中调用System.exit(0)会使得JVM退出,return只是使得运行main方法的线程退出了,并不代表JVM会退出,因为JVM退出的要求是所有非deamon线程都结束。并不是如果是程序入口方法,两者就没什么区别!

你可能感兴趣的:(System)