其实准确的说应该是在return中间执行的,下面是演示代码
public class Test {
public static void main(String[] args) {
System.out.println(getNumber());
}
public static int getNumber() {
int x = 10;
try {
System.out.println(10 / 0);
} catch (Exception e) {
x = 20;
return x; //return 20;
} finally {
x=30;
System.out.println("hello");
}
return 0;
}
}
这个你可 以利用eclipse高级工具,搞个断点进入调试界面,你就会发现x=20的值已经赋给了retrun x,但是并没有让程序结束,因为他看到后面还有finally,他就去走finally的执行语句了,finally中有个x=30,但是之后走完finally之后,而你可以发现输出的结果仍然是20,而不是30 ,finally中的x=30,30这个值并没有赋给 x 输出,所以结论就很明显了!这个也是张孝祥老师面试题里面整理的一道题,有时间你也可以去看看这些题目,收获会很大的 |