黑马程序员技术交流社区

标题: 麻烦给解释一下 [打印本页]

作者: @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