try catch中的return与finally

代码为

public class Test{	
    public int add(int a,int b){	
         try {	
             return a+b;		
         } 
        catch (Exception e) {	
            System.out.println("catch语句块");	
         }	
         finally{	
             System.out.println("finally语句块");	
         }	
         return 0;	
    } 
     public static void main(String argv[]){ 
         Test test =new Test(); 
         System.out.println("和是:"+test.add(9, 34)); 
     }
}

结果答案为:

finally语句块

和是:43

解释:System.out.println("和是:"+test.add(9, 34));输出的字符串是一个整体,首先进入add方法,当程序执行到try{}语句中的return方法时,它会将要返回的结果存储到一个临时栈中,然后程序不会立即返回,而是去执行finally{}中的程序,因此输出finally语句块 当finally{}中的程序执行完毕时,就会将临时栈中的值取出返回,最后输出和是:43