锁定老帖子 主题:一道“简单的”Java基础题
该帖已经被评为隐藏帖
|
|
---|---|
作者 | 正文 |
发表时间: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; } } } 大家猜猜结果是几?
声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-08-08
。。。没人理你,我和玩玩吧,finally {
System.out.println("i : finally"); ++i; } 这个方法不管怎么说都是在最后执行的,所以是1. |
|
返回顶楼 | |
发表时间:2011-08-08
为何是1?奇怪
|
|
返回顶楼 | |
发表时间:2011-08-08
107192468a 写道 。。。没人理你,我和玩玩吧,finally {
System.out.println("i : finally"); ++i; } 这个方法不管怎么说都是在最后执行的,所以是1. 如果你debug一下,会发现i 1变成2 |
|
返回顶楼 | |
发表时间:2011-08-08
1,值传递
|
|
返回顶楼 | |
发表时间:2011-08-08
最后修改:2011-08-08
大家执行下看看,其实结果是1不是2 !!!!
|
|
返回顶楼 | |
发表时间:2011-08-08
很简单。。finally和return同时出现的话,先执行return再执行finally
|
|
返回顶楼 | |
发表时间:2011-08-08
其实i在执行finally之前已经被return了,只能这么理解。
|
|
返回顶楼 | |
发表时间:2011-08-08
最近JAVAEYE 拿SWING得瑟的不泛滥了这种基础题又开始泛滥了...
|
|
返回顶楼 | |
发表时间:2011-08-08
return 会把值返回
finally操作的i不是返回的i |
|
返回顶楼 | |