黑马程序员技术交流社区

标题: 关于try-catch-finally的一个问题,求高手指点 [打印本页]

作者: 阿牛    时间: 2012-3-30 18:27
标题: 关于try-catch-finally的一个问题,求高手指点
本帖最后由 牛秦勇 于 2012-3-30 18:28 编辑

大家认为下面程序运行结果是多少?100还是200?
class  tryDemo
{
        public static void main(String[] args)
        {
                System.out.println(getValue());
        }
         public static int getValue()  
     {  
       int value = 0;  
         
       try  
       {  
         value = 100;  
           
         return value;  
       }  
       finally  
       {  
         value = 200;  
       }  
     }  

}

结果是100,但,为什么呢?求高手指点。

作者: 鲍亚坤    时间: 2012-3-30 18:33
return 返回的是100。。。
没有200的return
  1. class  tryDemo
  2. {
  3.          public static void main(String[] args)
  4.         {
  5.                  System.out.println(getValue());
  6.          }
  7.           public static int getValue()  
  8.       {  
  9.         int value = 0;  
  10.          
  11.         try  
  12.         {  
  13.           value = 100;  
  14.             
  15.           return value;  //将100返回。。
  16.         }  
  17.         finally  
  18.         {  
  19.           value = 200;  
  20.         }  
  21.       }  

  22. }
复制代码

作者: 李成航    时间: 2012-3-30 18:43
你是将value=100值返回后,才将value重新赋值为200.而200这个值并未被返回。
作者: 王运科    时间: 2012-3-30 18:51
  try  
       {  
         value = 100;  
           
         return value;  //此时将100返回,作为调用这个方法返回的值
       }  
       finally  
       {  
         value = 200;  //此时value的值为200,但是调用这个方法返回的值还是100
       }  

作者: 阿牛    时间: 2012-3-30 18:54
明白了,谢谢各位
作者: 黄小钒    时间: 2012-3-30 18:55
  1. class  tryDemo
  2. {
  3.          public static void main(String[] args)
  4.         {
  5.                  System.out.println(getValue());
  6.          }
  7.           public static int getValue()  
  8.       {  
  9.         int value = 0;  
  10.          
  11.         try  
  12.         {  
  13.           value = 100;  
  14.             
  15.           return value;  //将100返回。。
  16.         }  
  17.         finally  
  18.         {  
  19.           value = 200;  
  20.           [color=Blue]//return value; // 若在此处返回 则打印结果为 200[/color]        }  
  21.       }  

  22. }
复制代码

作者: 黄小钒    时间: 2012-3-30 18:57
  1. class  tryDemo
  2. {
  3.          public static void main(String[] args)
  4.         {
  5.                  System.out.println(getValue());
  6.          }
  7.           public static int getValue()  
  8.       {  
  9.         int value = 0;  
  10.          
  11.         try  
  12.         {  
  13.           value = 100;  
  14.             
  15.           return value;  //将100返回。。
  16.         }  
  17.         finally  
  18.         {  
  19.           value = 200;  
  20.           //return value; // 若在此处返回 则打印结果为 200
  21.         }  
  22.       }  

  23. }
复制代码

作者: 李井山    时间: 2012-3-30 19:00
你的 int getValue()在try时就返回了value=100;所以返回100;
想返回200的话,就finally  
        {  
           return   value = 200;  
        }  
后面return返回的value会覆盖前面的value




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