查询了很多解释,但网上都是转载别人的,好像也没有深究细节问题。
代码如下:
1 public class test002 {
2 public static int test() {
3 try {
4 return fun1();
5 } finally {
6 return fun2();
7 }
8 }
9 public static int fun1() {
10 System.out.println("fun1被执行了");
11 return 1;
12 }
13 public static int fun2() {
14 System.out.println("fun2被执行了");
15 return 2;
16 }
17 public static void main(String[] args) {
18 System.out.println(new test002().test());
19 }
20 }
执行结果:
fun1被执行了
fun2被执行了
2
代码反映的情况是return首先被执行,finally后被执行,return并不是让结果马上返回,而是先把结果放到函数中,然后必须等待finally结果出来后在真正的返回,此时返回的结果就是finally当中的那个结果