当前位置: 代码迷 >> J2EE >> 带有finally()的执行代码顺序有关问题
  详细解决方案

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

热度:70   发布时间:2016-04-17 22:57:53.0
带有finally()的执行代码顺序问题

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
------解决思路----------------------
方法中依次执行,到return时由于有finally必须先执行,
所以return值被暂存,也就是bb被暂存
yy先被输出
然后bb返回被main里面输出



------解决思路----------------------
finally是必须执行的,而且是在return真正退出方法之前执行,也就是说先输出yy,然后再讲bb返回,打印
------解决思路----------------------
finally在return前执行,return 的值在执行finally前被存入栈中,所以在finally中改变对象后,不影响return的结果
我这样理解对不对?
  相关解决方案