黑马程序员技术交流社区

标题: try-catch-finally 细节知识——表示看了好久才懂啊。。 [打印本页]

作者: Myth、骞    时间: 2015-11-29 12:45
标题: try-catch-finally 细节知识——表示看了好久才懂啊。。
public  classTest {  
  
    public static void main(String[] args) {  
       System.out.println(newTest().test());  
    }  
    staticint test()  
    {  
       int x = 1;  
       try  
       {  
           return x;  
       }  
       finally  
       {  
           ++x;  
       }  
    }  
}  
---------执行结果 ---------
1



public class  smallT{
         public static void  main(String args[]){
                   smallT t  = new smallT();
                   int  b =  t.get();
                   System.out.println(b);
         }
         public int  get()
         {
                   try     {return 1;}
                   finally{return 2;}
         }}
---------执行结果 ---------
2



原因:try中的return语句调用的函数先于finally中调用的函数执行,也就是说return语句先执行,finally语句后执行。Return并不是让函数马上返回,而是return语句执行后,将把返回结果放置进函数栈中,此时函数并不是马上返回,它要执行finally语句后才真正开始返回。
作者: anuo    时间: 2015-11-29 15:06
三者是伙伴关系吧,记不清了。
作者: 一个人的朝圣    时间: 2015-11-29 18:03
是的 就是这样 的
作者: Little_jie    时间: 2015-11-29 21:28
学习了,以前都没注意到这些细节
作者: 成帅帅    时间: 2015-11-29 21:50
表示现在还没有学到这里,根本看不懂。刚上基础班两天现在还没学到这里,但是感觉好牛逼
作者: xiaoziyk    时间: 2015-11-29 21:58
不能完全说return语句执行,它是先创建一个返回路径,并把值赋上去
作者: 斥候7300    时间: 2015-11-29 22:01
又学到了
作者: 小鹿    时间: 2015-11-29 22:19
对的!  finally语句就是结合return语句两个一起的是要注意!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2