public static void main(String[] args) {
System.out.println("结果:"+test());
}
public static int test(){
int i=0;
try{
i=1;//1.1
System.out.println("try:"+i);//1.2
return i;//3.1
}catch(Exception e){
e.printStackTrace();
i=2;
System.out.println("catch:"+i);
}finally{
//2.1
i=10;
System.out.println("finally:"+i);
}
return -1;
//打印结果
//try:1
//finally:10
//结果:1
//说明:第一部执行完后将i=1暂存起来然后执行finally中的代码,最后返回暂存的i值。
//(finally中的i不会覆盖暂存的值)
}
本文详细解析了Java中try-catch-finally语句的执行流程,特别是当finally块中修改了要返回的变量时,其实际效果并不会影响到方法的返回值。通过具体代码示例,解释了为什么finally块内的变量修改看似无效,以及这种行为背后的原因。
1046

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



