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
关于 Java 中 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;
所以这段代码的话,先执行try,打印出yes;在return之前执行finally中语句打印出 b>25:90
finally,最后执行try中的return语句 b=88。所以最终结果为88.