finally 和 return 关键字

  一般提到finally,大家都知道,在try语句中,无论是否catch到Exception,都会执行finally语句。

  那么,如果同时含有return关键字,还会执行finally语句吗,若执行,是先return还是先finally呢?

  其实这个问题并不难,自己写一个程序一下就可以验证了,但是一般的java初学者会忽视或混淆这个情况,下面我们来个小例子验证一下:

public class TestFinally {
  int a = 0;

  public static void main (String[] args) {
    System.out.println(TestFinally.test(1));

  }

  public static int test (int a) {
    try {
      a = 1;
    } catch (Exception e) {
      e.printStackTrace();
      } finally {
        a = a +2;
        }
    return a;
    }
}

 

  运行上面的代码,输出结果是3,说明在这种return情况下,先执行了finally 

  那么,如果在try语句中, a = 1; 语句下面加上 return a; 语句 呢?

  如:

    try {
      a = 1;

      return a;
    } 

  输出结果就变为了1 ~!,有意思吧,呵呵

posted @ 2015-12-03 15:02  JayJayJay  阅读(106)  评论(0)    收藏  举报