A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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语句后才真正开始返回。

7 个回复

倒序浏览
三者是伙伴关系吧,记不清了。
回复 使用道具 举报
是的 就是这样 的
回复 使用道具 举报
学习了,以前都没注意到这些细节
回复 使用道具 举报
表示现在还没有学到这里,根本看不懂。刚上基础班两天现在还没学到这里,但是感觉好牛逼
回复 使用道具 举报
不能完全说return语句执行,它是先创建一个返回路径,并把值赋上去
回复 使用道具 举报
又学到了
回复 使用道具 举报
小鹿 中级黑马 2015-11-29 22:19:23
8#
对的!  finally语句就是结合return语句两个一起的是要注意!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马