在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;
}
}

有什么区别??
...全文
1612 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)
源码链接: https://pan.quark.cn/s/651b74ed6067 《MQL4中文帮助手册》是一部详尽阐述MetaQuotes Language 4(MQL4)编程语言的参考书籍,其核心目标在于协助用户掌握并运用MQL4进行金融市场的自动化交易系统构建。MQL4作为MetaTrader 4交易平台的核心编程语言,赋予了交易者开发自定义指标、Expert Advisors(EA智能交易系统)以及脚本的能力。 ### MQL4基础知识 1. **Syntax 语法**:MQL4的语法规则与C/C++语言展现出相似性,涵盖了变量声明、函数调用、条件判断、循环机制等核心要素。熟练掌握并合理运用语法是开发高效MQL4代码的先决条件。 2. **Comments 注释**:在MQL4编程环境中,单行注释采用两个斜线(//)进行标识,而多行注释则通过/* 和 */进行界定。注释的主要功能在于阐释代码用途,从而提升代码的可读性与可维护性。 3. **Identifiers 标识符**:标识符是程序中用于命名变量、函数、类等元素的字符序列。其命名规则要求必须以字母或下划线作为开头,后续可包含字母、数字或下划线组合。MQL4语言对大小写敏感,因此`MyVariable`与`myvariable`被视为两个独立的标识符。 4. **Reserved words 保留字**:保留字是MQL4语言中预先设定的特殊词汇,例如`int`, `bool`, `double`, `if`, `else`, `for`, `while`等,这些词汇不可用作自定义标识符,以防止与语言关键字产生冲突。 5. **Data types 数据类型**:MQL4支持多元化的数据类型,包括...

62,620

社区成员

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

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