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语句执行时,返回值就已经确定了