A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© @ne_pie尒ce 中级黑马   /  2013-11-19 22:26  /  1080 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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中的代码没有执行?


2 个回复

倒序浏览
本帖最后由 wjj410830911 于 2013-11-19 22:43 编辑

因为你把return写到了try里面去了
Java虚拟机判断   int x =1;  尝试可以返回x吗?可以就不运行catch了
而finally只是针对在catch里面多种方法无论是抛还是怎么样  最终都要执行finally
所以 你的代码刚执行到try就直接return了  没有进catch也就没判断finally
我是这么认为的

后编辑的:=, =刚刚看了下面的回答 原来是这么回事  的确判断了finally 只不过最后返回的是1  
回复 使用道具 举报
finally  执行了   打印的只是返回的值return 的1  并没有对 finally 里面的值进行打印输出  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马