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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 牛秦勇 于 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,但,为什么呢?求高手指点。

7 个回复

倒序浏览
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. }
复制代码
回复 使用道具 举报
你是将value=100值返回后,才将value重新赋值为200.而200这个值并未被返回。
回复 使用道具 举报
  try  
       {  
         value = 100;  
           
         return value;  //此时将100返回,作为调用这个方法返回的值
       }  
       finally  
       {  
         value = 200;  //此时value的值为200,但是调用这个方法返回的值还是100
       }  
回复 使用道具 举报
明白了,谢谢各位
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
你的 int getValue()在try时就返回了value=100;所以返回100;
想返回200的话,就finally  
        {  
           return   value = 200;  
        }  
后面return返回的value会覆盖前面的value
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马