直接上代码:
System.out.println("结果:"+test(1));
public static int test(int i) {
try {
System.out.println("进入try:");
System.out.println(++i);
return i;
}catch(Exception e) {
}finally {
++i;
System.out.println("finally"+i);
//return i;
}
}
结果:
进入try:
2
finally3
结果:2
如果把finally里的return注释去掉,结果才是3.
从结果可以看出,其实关于这个回答可以说是,finally是在return中间执行的,执行到return之后,结果就放在一个临时空间里面,然后就执行finally,虽然finally里面有对result里面操作,但是已经不影响结果了,除非是在finally里面有执行return。
但是问题又来了,如果return的变量是静态变量,执行完finally后改变变量的值的话,返回的结果是受影响的,应该是静态变量的原因,不管在哪里改变,都会受到影响