java try中包含return语句,finally中的return语句返回顺序

时间:2021-07-18 17:30:56

//结论: finally 中的代码比 return 和 break 语句后执行

public static void main(String[] args) {
int x=new Test.test();
System.out.println(x);//out:1
}

int test(){
/int x=1;
 try{
  return x;//在进入finally之前 已经将return的值传到返回栈中,finally中对x的修改并没有用return语句返回到主函数中
}
finally{
x=2;// 并没有起作用
//  return 2;// 加上此句, 比 try 中的return x语句后执行,所以 返回2
}

//////////////////////////////

使用函数 更清楚的看出结论
try{
return fun1();
}
finally {
return fun2();
}
}

private int fun2() {
System.out.println("fun2");
return 2;
}

private int fun1() {
System.out.println("fun1");
return 1;
}

//返回

fun1

fun2

主函数中 值为2