public static void main(String[] args) {
System.out.println(new Test5().test());
}
int test() {
int x = 1;
try {
x = 10;
return x;
} finally {
x = 20;
//执行finally会打印finally
System.out.println("finally");
}
}
}
/*结果是 finally 10。
*分析: *这个代码之所以返回的是10,不是20,是因为当执行return语句的时候有一个返回路径,
*return是用来结束方法的,在他要结束之前他会判断有没有finally,但是他的返回路径已经建立好了,
*结论: *先执行finally但是不会改变他返回路径的值.
这是基本类型,当try 中是引用数据类型,finally中的操作是可以改变返回路径的值,但是还是要执行finally 再return!
*/
|