黑马程序员技术交流社区

标题: 新发一贴抒发对一位同学finally语句的**之情 [打印本页]

作者: 许圣建    时间: 2012-3-11 00:53
标题: 新发一贴抒发对一位同学finally语句的**之情
原帖链接:为什么finally语句会在这个return后面执行 求解释    为什么结果是5
http://bbs.itheima.com/forum.php ... 8&fromuid=13221
大家可以试试下面这段代码跑出来的结果:
  1. public class TestTryCatch {
  2.     /**
  3.      */
  4.     public static void main(String[] args)
  5.     {
  6.         System.out.println("i的值为。。。" + new TestTryCatch().test());
  7.     }

  8.     private int test() {
  9.         int i = 1;
  10.         try
  11.         {
  12.             return i;
  13.         }
  14.         finally
  15.         {
  16.             ++i;//[b]如果结果是2,就说明return语句是在finally之后才执行,嗯哼?[/b]
  17.             System.out.println("finally is Executed…");
  18.         }
  19.     }
  20. }
复制代码
虚脱了,晚安!

作者: 李明伟    时间: 2012-3-11 08:11
由于try catch  finally语句的执行顺序是先执行try内的语句,如果有异常则执行catch,执行完后会执行finally内的代码,
上面这段代码中先执行的try内的代码,返回了i的值1,后又执行finally内的语句,++i,i变为2,再执行System.out.println("finally is Executed…");

然后再去执行return,将1返回,以为2是return之后执行的,所以返回的是1不是2




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