在java中有try和fianlly时,try中有return语句,而finally中有return和没有return时有什么区别。
1、try中有return,而finally中没有return
public class TryFinally { public static void main(String[] args) { System.out.println(test1()); } static int test1(){ int a; try { a = 2; System.out.println("try:a = "+a); return a; } finally{ a = 3; System.out.println("finally:a = "+a); } } }
输出结果为
try:a = 2
finally:a = 3
2
分析:首先执行try里的语句,不执行return,把return的结果放在缓存里,然后执行finally的语句,最后返回缓存里的值。
2、try中有return,finally中也有return
public class TryFinally { public static void main(String[] args) { System.out.println(test1()); } static int test1(){ int a; try { a = 2; System.out.println("try:a = "+a); return a; } finally{ a = 3; System.out.println("finally:a = "+a); return a; } } }
输出结果:
try:a = 2
finally:a = 3
3
分析:首先执行try里的语句,不执行return,把return的结果放在缓存里,然后执行finally的语句,finally中有return,直接执行return语句,即返回值是finally中的return值。