面试题:
try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
---
看看测试代码:
public class TestReturn {
public static void main(String[] args) {
System.out.println(test());
}
@SuppressWarnings("finally")
public static int test() {
int a = 10;
try {
System.out.println("try...");
return a = 20;
} catch (Exception e) {
} finally {
if (a == 20) {
System.out.println("到了 try 的return了");
}
System.out.println("finally...");
return a = 30;
}
}
}
这个代码执行的结果是:
try...
到了 try 的return了
finally...
30
由此可以看出,finally是在try{}中的return执行到"一半"的时候执行的,并不是在之前或者之后,这里说”一半“是因为到return的时候,a=20已经执行了,在finally里面a的值为20