文章分析来自面试习题集;
1.先看下面程序会输出什么
public class Testus {
public int test(){
int a=9;
int b=0;
try{
return 1;
}catch(Exception e){
}finally{
return 2;
}
}
public static void main(String args[]){
System.out.println(new Testus().test());
}
}
上面的输出是2,没错所以这里可以想象主函数中有一个存放结果集的罐子,并不是马上return后就马上执行输出,而是要等到从函数的finally完全执行结束才告诉主函数我运行结束了,此时才重新执行主函数的剩下语句。
2.再看下面这个输出什么
public class Testus {
public int fun1(){
System.out.println("a");
return 1;
}
public int fun2(){
System.out.println("b");
return 1;
}
public int test(){
try{
return fun1();
}finally{
return fun2();
}
}
public static void main(String args[]){
System.out.println(new Testus().test());
}
}
输出a,b,2,所以是不是更加清晰了。