黑马程序员技术交流社区

标题: java中的一点不解 [打印本页]

作者: 乐行者广裁    时间: 2013-5-19 11:46
标题: java中的一点不解
本帖最后由 乐行者广裁 于 2013-5-19 22:01 编辑

java中 return和finaly谁最后执行?举例说明
作者: 李德全    时间: 2013-5-19 12:09
你自己写一个return和finaly的输出语句不就知道了。可能你return不能那啥,但是你可以这样:return 函数;这个函数打印输出。
作者: 小石头39910    时间: 2013-5-19 12:31
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里面的代码块,如果有返回值覆盖语句,就改变先前放在某个地方的那个值,如果没有,就把那个地方的东西取出来返回出去


作者: 神之梦    时间: 2013-5-19 12:42
小石头39910 发表于 2013-5-19 12:31
public     class     Test
{  
  public      static      void      main(String[]      args)

辛苦啊
选择<>这个插入代码吧

作者: 刘胜寒    时间: 2013-5-19 21:53
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. }
复制代码

作者: 刘胜寒    时间: 2013-5-19 21:53
楼主注意结贴。。




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