//1.try{}里有return,finally{}里的code会不会被执行?在return前执行还是return后?

public class HelloWorld {
  public static void main(String []args) {

       System.out.println(new HelloWorld().test());
  }

   static int test(){

    int x = 1;
    System.out.println("try里面的x : " + x);

    try{
      System.out.println("try里面的x : " + x);
      return x;
    }
    finally{

      System.out.println("enter finally...");

      ++x;

      System.out.println("fianlly里面的i : " + i);

      }
    }
  }

//执行结果

  /*try里面的x : 1

  enter finally...

  fianlly里面的i :

  1 **/

总结:总的来说应该是在return中间执行的,return数据先放入一个函数栈中,等执行结束之后才真正的返回

//2.try{}里有return,finally{}里的return执行顺序

  try{
    return 1;
  }
  finally{
    return 2;
  }

//执行结果:2

总结:先调用try里的return放置于函数栈中,然后再执行finally。

    

//3.finally{}里的code和return执行顺序

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

总结:finally里的代码比return和break语句后执行

 

PS: final、finally 和 finalize的区别?

  final属于声明属性,方法和类,表示属性不可变、方法不可覆盖、类不可继承,内部类要访问局部变量必须将局部变量定义成final;

  finally是异常处理语句的一部分;

  fianlize则是object类的一个方法。

 

posted on 2020-04-07 22:12  小潘同学  阅读(231)  评论(0)    收藏  举报
-->