A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨冬冬 中级黑马   /  2014-7-13 23:21  /  1458 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 杨冬冬 于 2014-7-14 22:12 编辑

他的结果是30,而把return x;放到x=40后面,他的输出结果是40,请说出他们的运行原理,要详细的

123.jpg (123.22 KB, 下载次数: 11)

123.jpg

4 个回复

倒序浏览
这个,就是重新赋值了
回复 使用道具 举报
finally中的return X 会创建一个新的返回路径 x = 40,他会覆盖catch中创建的return返回路径,因此打印的是40;
回复 使用道具 举报
1.第一句时,int x = 10 ;    --> x == 10
2.进入try,读取 x/0 ,报错     --> x == 10
3.因为错误进入catch,x = 30,然后return x,方法结束返回主方法。  --> x == 30
4. 进入finally,x =40, 但主方法内要打印的是返回值30,跟x的变化无关了。  --> x == 40

至于第二种情况很明显了,把40返回,就打印40。
回复 使用道具 举报
jwx555 发表于 2014-7-14 01:33
1.第一句时,int x = 10 ;    --> x == 10
2.进入try,读取 x/0 ,报错     --> x == 10
3.因为错误进入catc ...

谢谢回答,我好像有点明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马