带有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
...全文
100 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
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里面输出

67,549

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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