论坛首页 Java企业应用论坛

一道“简单的”Java基础题

浏览 12408 次
该帖已经被评为隐藏帖
作者 正文
   发表时间:2011-08-08   最后修改:2011-08-08
public class Test {

	public static void main(String[] args) { 
        System.out.println("return value of getValue(): " + getValue()); 
    } 

       public static int getValue() { 
        int i = 1; 
        try { 
                 return i; 
        } finally { 
        	System.out.println("i :  finally");
            ++i; 
        } 
    } 

}

 大家猜猜结果是几?

 

   发表时间:2011-08-08  
。。。没人理你,我和玩玩吧,finally {  
            System.out.println("i :  finally"); 
            ++i;  
        }  
这个方法不管怎么说都是在最后执行的,所以是1.
0 请登录后投票
   发表时间:2011-08-08  
为何是1?奇怪
0 请登录后投票
   发表时间:2011-08-08  
107192468a 写道
。。。没人理你,我和玩玩吧,finally {  
            System.out.println("i :  finally"); 
            ++i;  
        }  
这个方法不管怎么说都是在最后执行的,所以是1.



如果你debug一下,会发现i 1变成2
0 请登录后投票
   发表时间:2011-08-08  
1,值传递
0 请登录后投票
   发表时间:2011-08-08   最后修改:2011-08-08
大家执行下看看,其实结果是1不是2  !!!!
0 请登录后投票
   发表时间:2011-08-08  
很简单。。finally和return同时出现的话,先执行return再执行finally
0 请登录后投票
   发表时间:2011-08-08  
其实i在执行finally之前已经被return了,只能这么理解。
0 请登录后投票
   发表时间:2011-08-08  
最近JAVAEYE 拿SWING得瑟的不泛滥了这种基础题又开始泛滥了...
0 请登录后投票
   发表时间:2011-08-08  
return 会把值返回

finally操作的i不是返回的i
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics