public class Message {
public static void main(String[] args){
int result = m();
System.out.println(result);
}
public static int m(){
int i = 100;
try{
return i;
}
finally{
i++;
}
}
}
这里输出的 result 是100

最后返回值是100,因为 try 中的 return 其实已经被执行,因此i的值已经确定是100了,即return 100 ;
但是这个时候发现到了还有 finally 子句要执行,因此 finally 子句进行 i++,但是这个 i++ 并不影响 return 的值
证明就是把 i++ 语句改成 System.out.println(++i); 语句,如下:
public class Message {
public static void main(String[] args){
int result = m();
System.out.println(result);
}
public static int m(){
int i = 100;
try{
return i;
}
finally{
System.out.println(++i);
}
}
}
运行结果:

结论:
方法体中的语句是自上而下一句句执行的,并且return语句执行时,返回值就已经确定了
本文探讨了Java中return语句与finally块的执行顺序。示例代码显示,即使在finally块中有变量修改,return语句返回的值也不会受到影响。这表明在Java中,return值在执行return时已经确定,finally块的执行不会改变返回值。

被折叠的 条评论
为什么被折叠?



