java异常处理中关于finally的一个面试题
public class ExceptionTest01 {
public static void main(String[] args) {
int num = m1();
System.out.println(num); //100
}
/*
* java语法规则(一旦这个说了,就必须这个做,不可改变)
* 1.方法体中的代码必须遵循自上而下顺序依次逐行执行。(不可改变的)
* 2.return语句一旦执行,整个方法必须结束。(不可改变)
* */
public static int m1() {
int i = 100;
try{
//这行代码出现在int i = 100下方,所以最终结果必须是100.
//return最后执行。一旦return执行,方法必须结束。
return i;
}finally {
//因为有finally,所以这里i++是在return前面执行
i++;
}
}
}
//sun公司为了不违反自己制定的规则。所以是这样做的
/*
* 上面的代码反编译后的结果:
* int i = 100;
* int j = i;
* i++;
* return j;
* */