问题描述
代码如下:public class FinallyFlowTest {public static void main(String[] args) { int a = test(); System.out.println(a);}private static int test() {int count=5 ;try{return count++;}finally{System.out.println("finally块执行了"); ++count ;}}}输出结果为:finally块执行了5改动一下,程序如下:public class FinallyFlowTest {public static void main(String[] args) { int a = test(); System.out.println(a);}private static int test() {int count=5 ;try{return count++;}finally{System.out.println("finally块执行了");return ++count ;}}}输出结果:finally块执行了7请达人帮我分析一下,3Q
解决方案
第一段:进入try时count=5;return count++; 求出结果值count = 5count++ //count = 6进入finally ++count ; //count = 7返回结果值count为5第二段进入try时count=5;return count++; 求出结果值count = 5count++ //count=6进入finally return ++count ; count = 7并返回
解决方案二:
第一个你因该知道了第二个:# finally # { # System.out.println("finally块执行了"); # return ++count ; -----最终走了这个return# # }
解决方案三:
第一段代码的返回的是:try里面的 count,return count++;返回的值是:5 所以输出结果是:5;第二段代码返回的是 finally里面的 count private static int test() { int count=5 ; try { return count++; //返回count的值为5 返回后count=6 } finally { System.out.println("finally块执行了"); return ++count ; //返回前加一 count=7 } } 另外要注意:finally块里面的语句 无论何种情况 都要执行
解决方案四:
你记住return对于finally代码快是不起作用的,还是会执行finally里的代码!