try catch finally一点疑惑

try catch finally一点疑惑
   在http://www.cnitblog.com/yemoo/archive/2008/06/18/45850.html文中巧用try finally;但是让我对finally执行过程有点疑惑,发现java的try catch功能和js是一样的。下面列出例子:
   public int test1(){
   int i=4;
   try{ return i;}finally{ i=0;System.out.println("---test----");}
}
   执行结果:输出---test----,test1方法返回4;我的疑惑是为什么不返回0
   在QQ群里讨论的时候,有人说finally中的语句在try中的return后执行。但是如下代码执行否决了上面的结论。
public int test2(){
   int i=4;
   try{ return i;}finally{ i=0;System.out.println("---test----");return i;}
}
   注意:在finally中多了个return i;
   执行结果:输出---test----,test2方法返回0;
   这个例说明了finally中的语句是在try的return执行前执行的。那么test1方法的finally中i=0了,但是为什么test1方法还返回4呢?这是我的疑惑,那位知道解释一下。

你可能感兴趣的:(try catch finally一点疑惑)