try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?
会执行,在方法返回调用前执行。
有一个关于finally的面试题如下:
public static int m() {
int i=100;
try {
return i;
}finally {
i++;
}
}
问最后输出 i 的值为多少?
我们知道i++ 是在return方法之前执行,return方法一旦执行,整个方法必须结束,但是由于java中有这样一条规则,方法体中的代码必须遵循自上而下顺序依次执行
因为return i;这行代码是在int i=100;之后,所以最后输出 i 的值还是为100;