为了账号安全,请及时绑定邮箱和手机立即绑定

这段程序运行以后输出什么?为什么?

这段程序运行以后输出什么?为什么?

我什么都不知道 2015-12-16 23:31:58
public class TestFinal{     public static void main(String args[]){         System.out.println(doSomething());     }          public static int doSomething(){         try{             return 1;         }catch(Exception e){         }finally{             return 2;         }     } }
查看完整描述

4 回答

已采纳
?
乔小欠儿

TA贡献18条经验 获得超15个赞

我的理解是,当走到try里时return返回的1被存在一个临时的变量里,此时若没有发生异常,一定会进入到finally代码块里(听我这的一个老工程师说底层其实是使用了goto方法进入到finally里的)。此时finally里再次使用return把2赋到了刚才存储1的临时变量里。然后返回的值就变成了2。

不过在项目中是不推荐在finally里使用return的

查看完整回答
反对 回复 2015-12-17
?
J_Coder

TA贡献1条经验 获得超0个赞

try catch finally 这种机制要求finally块中的语句必须执行,所以最终会返回2而不是1.

查看完整回答
反对 回复 2015-12-17
?
Caballarii

TA贡献1123条经验 获得超629个赞

当try中语句return之前会先执行finally中的语句,但这里在finally里面return了,所以实际不会return 1,而是return 2

最后结果是2

查看完整回答
反对 回复 2015-12-17
?
天启之魂

TA贡献174条经验 获得超85个赞

.................我觉得编译应该会失败把.....语法明显有问题啊

返回1以后,finally语句就执行不到了

查看完整回答
反对 回复 2015-12-16
  • 4 回答
  • 0 关注
  • 1757 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信