在main方法中System.exit(0)与return 有什么区别???

孤尽JavaSea 2008-11-08 05:56:51
class A
{
public static void main(String args[])
{
System.exit(0);
}
}


class A
{
public static void main(String args[])
{
return;
}
}

有什么区别??
...全文
1474 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
itlearners 2010-12-08
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 chdw 的回复:]
结果不一样!main方法中调用System.exit(0)会使得JVM退出,

return只是使得运行main方法的线程退出了,并不代表JVM会退出,因为JVM退出的要求是所有非deamon线程都结束





对于你的例子来说,因为只有一个线程,所以效果一样。但是这两者代表的意思是不相同的
[/Quote]

就是这样的。。
caoyuanlangzi001 2010-10-15
  • 打赏
  • 举报
回复
system.exit(0)表示程序正常退出,system.exit(1)表示非正常退出,都没有返回值。return则返回至调用该方法的地方,如果后面还有代码则继续执行
风往北吹哈 2010-03-15
  • 打赏
  • 举报
回复
学习了!!
weizhao_2008 2008-11-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lovelp123 的回复:]
引用 1 楼 link_1029 的回复:
如果是程序入口方法,两者没什么区别
如果是别的方法,那System.exit(0)直接终止程序,就算后面有代码也不执行了
而return则返回至调用该方法的地方,如果后面还有代码则继续执行

说的对
[/Quote]
支持
时光瞄 2008-11-11
  • 打赏
  • 举报
回复
return回到上一层的调用位置是什么意思?
时光瞄 2008-11-11
  • 打赏
  • 举报
回复
21楼说得非常好
menght 2008-11-10
  • 打赏
  • 举报
回复
这里的效果都一样,都是跳出main();
但System.exit()是中止程序,停止jvm运行;return是回到上一层的调用位置
云上飞翔 2008-11-10
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 ZiSheng 的回复:]
引用 3 楼 java2000_net 的回复:
在main 里面没有区别
在别的地方区别,看其它朋友的回复!

是的,在main方法里边均是退出程序。
[/Quote]
答:在main 里面没有区别 ,这是错误的。当然是有区别。即使是在main()方法中。
在其它方法中的区别我们不说。就讨论在main()中的区别:
当用return;返回时,main()并不能立即运行结束,而用System.exit(数值);时,main()将立即无条件的结束
如:main()中代码
public static void main(String[] args)
{
其它代码;
new myThread().start();
if(条件为真) return;
//此处的return并不能立即结束main。等待线程myThread
//若换成System.exit(数值);则立即无条件地结束。


其它代码
}
}
null1null 2008-11-10
  • 打赏
  • 举报
回复
在main()中的区别:
当用return;返回时,main()并不能立即运行结束,而用System.exit(数值);时,main()将立即无条件的结束
pauliuyou 2008-11-10
  • 打赏
  • 举报
回复
确实楼上的例子非常好, 有的时候main线程并不能保证JVM退出. 所有的线程都结束才行
ChDw 2008-11-10
  • 打赏
  • 举报
回复
结果不一样!main方法中调用System.exit(0)会使得JVM退出,

return只是使得运行main方法的线程退出了,并不代表JVM会退出,因为JVM退出的要求是所有非deamon线程都结束





对于你的例子来说,因为只有一个线程,所以效果一样。但是这两者代表的意思是不相同的
rascalboy520 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 pauliuyou 的回复:]
system.exit(0); 是方法调用,在程序的任何地方都会显式表明JVM进程要退出系统了. 返回值为0.可以通过%errorlevel%来取得.

return 是一个关键字,表明返回调用当前方法的方法中. 如果是在main中,调用它的方法就是系统了,所以也可以起到退出JVM的作用,但没有返回值.
如果是在其他地方,这个语句只能返回上级调用中.
[/Quote]
15楼说的最清楚了,我也学习了,呵呵,
pauliuyou 2008-11-09
  • 打赏
  • 举报
回复
system.exit(0); 是方法调用,在程序的任何地方都会显式表明JVM进程要退出系统了. 返回值为0.可以通过%errorlevel%来取得.

return 是一个关键字,表明返回调用当前方法的方法中. 如果是在main中,调用它的方法就是系统了,所以也可以起到退出JVM的作用,但没有返回值.
如果是在其他地方,这个语句只能返回上级调用中.
ZHANGBINFLY 2008-11-09
  • 打赏
  • 举报
回复
学习了
jzy290574367 2008-11-09
  • 打赏
  • 举报
回复
理解就OK了.
孤尽JavaSea 2008-11-09
  • 打赏
  • 举报
回复
关于内存的清理都是一样的吗??
gmh521 2008-11-08
  • 打赏
  • 举报
回复
System.exit(0); 终止线程.
return 最主要的功能是返回一个值.
在main()方法中功能一样,其他方法中就不一样了。
laopo521anping 2008-11-08
  • 打赏
  • 举报
回复
恩呢,在main 里面没有区别
在别的地方区别,看其它朋友的回复!
黑夜愁客 2008-11-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 java2000_net 的回复:]
在main 里面没有区别
在别的地方区别,看其它朋友的回复!
[/Quote]
个人觉得这个答案不错
vicky19840808 2008-11-08
  • 打赏
  • 举报
回复
大家合并 就是最佳的答案了啊。
加载更多回复(7)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧