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()中代码

public static void main(String[] args) { 其它代码; new myThread().start(); if(条件为真) return; //此处的return并不能立即结束main,要等待线程myThread //若换成System.exit(数值);则立即无条件地结束。 其它代码 }

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值