黑马程序员技术交流社区

标题: try fianlly,和return的执行问题. [打印本页]

作者: 位俊鹏    时间: 2014-3-3 00:08
标题: try fianlly,和return的执行问题.
public  class Test {
      public static void main(String[] args) {
          // TODO Auto-generated method stub
          System.out.println(new Test().test());;
     }
     int test()
     {
          try
          {
              return func1();
          }
          finally
          {
              return func2();
          }
     }
     
     int func1()
     {
          System.out.println("func1");
          return 1;
     }
     int func2()
     {
          System.out.println("func2");
          return 2;
     }   
}
-----------执行结果-----------------
func1
func2
2
跟之前的那个一样,是不是return语句执行了但并没有输出,在finally之后才输出,但已经被新的return 2 ;给覆盖了??


作者: 我要的幸福呢    时间: 2014-3-3 00:42
我感觉应该是try里面的代码在return之前先执行finally里面的代码,结果再finally面return了,try里面就没有return了
作者: 平凡成就非凡    时间: 2014-3-3 01:50
我想当执行到try{ }的代码时,当时的返回值也确实是 1,只是当执行到finaliy时,它的返回值变成啦2 ,可以理解为
前面的返回者被覆盖啦。就如同,x=1,当我们再次给x赋值。x=2,一样。我们在来输出x ,的值就会是2啦。
作者: Maple    时间: 2014-3-3 02:01
方法是只能有一个返回值的,finally是最后执行,所以返回值就是func2()里的return语句了,覆盖这样说也是对的吧
作者: 晴天_雨天    时间: 2014-3-4 09:37
当执行到try{ }的代码时,返回值为 1,当执行到finaliy时,返回值变成2 ,可以理解为
前面的返回值被后面覆盖了。




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