public static int a(){
int i =1;
try{
System.out.println(i)//1
return i;//返回的是1
}finally{
i++;
System.out.println(i);//2
}
}
我们都知道try中虽然存在了return用于结束a()方法,但是finally语句还是会执行,说明finally语句块先执行,才执行的return,那为什么最终 i 返回的是1 ,原理是什么?
1、是因为代码遵循自上而下的顺序逐行执行吗?
2、还是执行到return时(这时候return记录有返回值了),但是因为后面还有finally(优先级比较高),所以先去执行fianlly里面的语句,执行finally语句完了之后,再去执行保存有返回值的return,所以虽然i++执行了,但是返回的是保存有返回值return,可以这样理解吗?