带有finally()的执行代码顺序问题

Usher丶AckMan 2015-11-03 05:47:15

public class Test3 {
// yy
// bb
public String Test3() {

String str = "aa";
try {
str = "bb";
return str;

} finally {
str="yy";
System.out.println(str);

}
}

public static void main(String[] args) {
// TODO Auto-generated method stub
Test3 t = new Test3();

System.out.println(t.Test3());
}


这段代码的执行顺序是什么样的,输出是什么?Why
...全文
81 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Usher丶AckMan 2015-11-03
  • 打赏
  • 举报
回复
whzxcvbnm 2015-11-03
finally在return前执行,return 的值在执行finally前被存入栈中,所以在finally中改变对象后,不影响return的结果 我这样理解对不对?
  • 打赏
  • 举报
回复
少主无翼 2015-11-03
finally是必须执行的,而且是在return真正退出方法之前执行,也就是说先输出yy,然后再讲bb返回,打印
  • 打赏
  • 举报
回复
飏飏一蝶 2015-11-03
方法中依次执行,到return时由于有finally必须先执行, 所以return值被暂存,也就是bb被暂存 yy先被输出 然后bb返回被main里面输出
  • 打赏
  • 举报
回复
相关推荐
发帖
Java EE

6.7w+

社区成员

J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
帖子事件
创建了帖子
2015-11-03 05:47
社区公告
暂无公告