黑马程序员技术交流社区

标题: try {}里有return语句,try后的finally {}里的code会不会被执行?什么时候执行 [打印本页]

作者: Jarc    时间: 2016-9-16 18:28
标题: try {}里有return语句,try后的finally {}里的code会不会被执行?什么时候执行
求解释代码
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;  
    }  
}     
}
作者: zhoubinjian    时间: 2016-9-16 19:51
finally块的语句在try或catch中的return语句执行之后,返回之前执行,也就是说return是等finally执行后才返回,所以值 应该是2
作者: 刘永川    时间: 2016-9-16 21:24
这个今天我也看到了 答案是1
我个人理解是  return 出去 1  然后 ++x.x的值已经变了  但是由于已经return了  
所以 看到的值为1
个人见解  我也是自己猜的
作者: YSL450125    时间: 2016-9-16 21:32
答案是1,执行到return语句后,会打开返回通道,将结果放进去,但是还没有完全返回,这个时候才执行finally语句,但是由于返回值已经蓄势待发,finally语句中 的代码不会影响返回值了.而且finally一般是用来释放资源,这样的代码应该只有考试的时候回出现
作者: a623562486    时间: 2016-9-16 21:36
会执行,但是说之前还是之后就不合适了,可以说try执行完后return已经构成完成路径
作者: somnus-sir    时间: 2016-9-16 21:51
YSL450125 发表于 2016-9-16 21:32
答案是1,执行到return语句后,会打开返回通道,将结果放进去,但是还没有完全返回,这个时候才执行finally语句, ...

同意这个观点
作者: liuyuan_8023    时间: 2016-9-17 12:42
答案1 正解,return 返回和finally是同时进行,至于谁快谁慢就随他们了
作者: litianji2016    时间: 2016-9-17 16:25
finally块在return之前执行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2