黑马程序员技术交流社区

标题: finally [打印本页]

作者: 杨冬冬    时间: 2014-7-13 23:21
标题: finally
本帖最后由 杨冬冬 于 2014-7-14 22:12 编辑

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

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

123.jpg

作者: doubandddk    时间: 2014-7-13 23:33
这个,就是重新赋值了
作者: hxwo211314    时间: 2014-7-13 23:50
finally中的return X 会创建一个新的返回路径 x = 40,他会覆盖catch中创建的return返回路径,因此打印的是40;
作者: jwx555    时间: 2014-7-14 01:33
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。

作者: 杨冬冬    时间: 2014-7-14 21:44
jwx555 发表于 2014-7-14 01:33
1.第一句时,int x = 10 ;    --> x == 10
2.进入try,读取 x/0 ,报错     --> x == 10
3.因为错误进入catc ...

谢谢回答,我好像有点明白了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2