package com.luffy.interview;
public class FinallyAndReturn {
public int test(){
int x = 1;
try{
return x;
}finally{
++x;
System.out.println("after return: " + x);
}
}
public static void main(String[] args) {
System.out.println("return: " + new FinallyAndReturn().test());
}
}
/*
网上有很多关于这道题的许多不太正确的说法,在此小弟更正分析一下:
如果是在return前执行的,最后的打印结果应该是after return: 2,return: 2;
如果是在return后执行的,最后的打印结果应该是return: 1,after return: 2;
但是最后结果却是after return: 2,return 1。
所以最终结果应该这样答:虽然答案看似在return之前执行的,但往更细地说,我的答案是在return中间执行的
下面提供多一个例子供大家理解。。。。。
*/
package com.luffy.interview;
public class FinallyAndReturn2 {
int test(){
try{
return func1();
}finally{
return func2();
}
}
int func1(){
System.out.println("func1");
return 1;
}
int func2(){
System.out.println("func2");
return 2;
}
public static void main(String[] args) {
System.out.println(new FinallyAndReturn2().test());;
}
}