异常中finally的一则经典例题
public class Demo {
public static void main(String[] args) {
System.out.println(fun());//结果为2
}
public static int fun() {
int i=1;
try {
i++;
return i;//运行到此处输出2
}catch(Exception e) {
i++;
}finally {
i++;//虽然会运行到此处,但不会改变上面的return值
}
return i;
}
}
我们添加一条return语句可以看到另一种的情况
public class Demo {
public static void main(String[] args) {
System.out.println(fun());//结果为3
}
public static int fun() {
int i=1;
try {
i++;
return i;//运行到此处输出2
}catch(Exception e) {
i++;
}finally {
i++;
return i;//会运行到此处,且return值i=3;
}
}
}
此题设计到内存问题需要好好理解