黑马程序员技术交流社区

标题: 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