public class Test22 {
public static void main(String[] args) {
System.out.println(tt());
} public static int tt() {
int b = 23;
try {
System.out.println("yes");
return b = 88;
} catch (Exception e) {
System.out.println("catch");
} finally {
b = 90;
if (b > 25) {
System.out.println("b>25:" + b);
}
b = 10;
System.out.println("finally");
}
b = 100;
return b;
}
}这段代码打印结果是什么?求分析Java

解决方案 »

  1.   

    这个帖子分析得比较好^_^
    关于 Java 中 finally 语句块的深度辨析
      

  2.   

    在try里面看到return和finally,先计算出return应该返回的值,暂存,再执行finally块,最后返回暂存的值。
    所以你看到的是yes b>25:90 finally 88。其实真要你迷糊,b=90那句应该去掉。然后你会看到b>25:88,这样才能证明我说的是对的这里return b=88;变成了这样:
    int temp ret = (b = 88);
    // b变成了88
    finally {
     ...
    }
    return temp;
      

  3.   

    任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。                     
    所以这段代码的话,先执行try,打印出yes;在return之前执行finally中语句打印出 b>25:90
    finally,最后执行try中的return语句 b=88。所以最终结果为88.