黑马程序员技术交流社区
标题:
return,finally问题
[打印本页]
作者:
@ne_pie尒ce
时间:
2013-11-19 22:26
标题:
return,finally问题
public class Test {
public static void main(String[] args) {
System.out.println(new Test().test());
}
static int test()
{
int x = 1;
try
{
return x;
}
finally
{
++x;
}
}
}
运行结果为:1
如果finally中的代码执行了,为什么运行结果为1?
既然返回1,是不是finally中的代码没有执行?
作者:
wjj410830911
时间:
2013-11-19 22:33
本帖最后由 wjj410830911 于 2013-11-19 22:43 编辑
因为你把return写到了try里面去了
Java虚拟机判断 int x =1; 尝试可以返回x吗?可以就不运行catch了
而finally只是针对在catch里面多种方法无论是抛还是怎么样 最终都要执行finally
所以 你的代码刚执行到try就直接return了 没有进catch也就没判断finally
我是这么认为的
后编辑的:=, =刚刚看了下面的回答 原来是这么回事 的确判断了finally 只不过最后返回的是1
作者:
Faner
时间:
2013-11-19 22:33
finally 执行了 打印的只是返回的值return 的1 并没有对 finally 里面的值进行打印输出
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2