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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值