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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 乐行者广裁 中级黑马   /  2013-5-19 11:46  /  1467 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 乐行者广裁 于 2013-5-19 22:01 编辑

java中 return和finaly谁最后执行?举例说明

5 个回复

倒序浏览
public     class     Test
{  
  public      static      void      main(String[]      args)
      {        
         System.out.print(tt());  
     }  
  public      static      int      tt()
   {        
     int      b      =      23;     
     try     
       {         
         System.out.println("yes");        
         return      b+=88;      
        }      
      catch(Exception      e)   
         {         
            System.out.println("error      :      "      +      e);      
        }        
      finally     
       {      
     if(b>25)      
      {         
        System.out.println("b>25      :      "+b);         
     }         System.out.println("finally");        
     }      
    return      b;  
      }
}
代码说明:
     主要是用来测试return和finally语句到底哪个先执行.在try语句中,返回了b=111; 在finally语句中判断是否大于25,如果大的话就输出大..程序的结果是
yes
b>25       :       111
finally
111
    也就是说明finally语句在return语句执行完了以后才执行的.
     OK,那么问题来了,如果我把finally语句改成这样呢:
       finally     
      {        
        if(b>25)      
        {         
            System.out.println("b>25      :      "+b);        
       }        
      System.out.println("finally");  

     return 100;      
   }
结果:

yes
b>25       :       111
finally
100



说明:finally中的return把try语句中的return覆盖了
所以说:
碰到try语句中的return,那么先把return的值放在某个地方,然后执行finally里面的代码块,如果有返回值覆盖语句,就改变先前放在某个地方的那个值,如果没有,就把那个地方的东西取出来返回出去

评分

参与人数 1技术分 +1 收起 理由
Sword + 1 请注意插入代码

查看全部评分

回复 使用道具 举报
return 后执行。。。
代码奉上,供君参考:
  1. //定义一个类  
  2. class Test{
  3.         //用来测试 return是在finally执行后才返回的
  4.         public int tryCatch()
  5.         {
  6.                 int n = 4;
  7.                 try{
  8.                         System.out.println("try中 n = "+n);
  9.                         return n;
  10.                 }
  11.                 finally{
  12.                         n++;
  13.                         System.out.println("finally中  n = "+n);
  14. //                        return n;
  15.                 }
  16.         }
  17. }
  18. public class Test5 {

  19.        
  20.          
  21.         public static void main(String[] args) {
  22.                 // TODO Auto-generated method stub
  23.                 System.out.println(new Test().tryCatch());
  24.         }

  25. }
复制代码
回复 使用道具 举报
你自己写一个return和finaly的输出语句不就知道了。可能你return不能那啥,但是你可以这样:return 函数;这个函数打印输出。
回复 使用道具 举报
小石头39910 发表于 2013-5-19 12:31
public     class     Test
{  
  public      static      void      main(String[]      args)

辛苦啊
选择<>这个插入代码吧
回复 使用道具 举报
楼主注意结贴。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马