黑马程序员技术交流社区
标题:
麻烦给解释一下
[打印本页]
作者:
@ne_pie尒ce
时间:
2013-11-8 07:33
标题:
麻烦给解释一下
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,为什么不是2?
作者:
黄炳期
时间:
2013-11-8 08:14
既然你知道finally里的代码一定执行,再加一条输出语句或者return不就知道结果了么
作者:
何超
时间:
2013-11-8 12:02
{:soso_e140:}你已经return了 系统已经把1返回出去了 虽然会执行finally里的++ 此时虽然++了 可是不会被输出
作者:
寻丶丶觅
时间:
2013-11-8 12:03
我说下运行原理吧 读到return x,这时虚拟机会对x值存储一个临时变量temp,其实是temp=x=1; 执行finally ++x. x=2,但是return返回的是temp,++x对其无影响. 如果你在finally中加入return x; 则打印结果是2;try中的return语句执行不到。
作者:
黄炳期
时间:
2013-11-8 12:12
帖子已分类
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2