以下代码执行后输出结果为( )
public class Test {
public static void main(String[] args) {
System.out.println("return value of getValue(): " +
getValue());
}
public static int getValue() {
try {
return 0;
} finally {
return 1;
}
}
}
输出结果:
return value of getValue(): 1
如果try语句里有return,返回的是try语句块中变量值。
详细执行过程如下:
1.如果有返回值,就把返回值保存到局部变量中;
2.执行jsr指令跳到finally语句里执行;
3.执行完finally语句后,返回之前保存在局部变量表里的值。
finally语句总是要执行的,当finally语句中也有return时,会覆盖try/catch语句块的return,所以一般不要在finally中加return语句。
return的两个作用:返回数据、结束方法运行