try-catch-finally-return执行问题:
(1)try里有一个return语句,那么紧跟在这个try后的finally里的代码会不会被执行,什么时候执行,在return前还是后;
- //Java try-catch-finally-return执行问题
- public class Test1
- {
- public static void main(String[] args)
- {
- System.out.println(returnTest());
- }
- public static boolean returnTest()
- {
- try
- {
- System.out.println("try块");
- return true;
- }
- finally
- {
- System.out.println("finally块");
- }
- }
- }
(2)如果finally也有return代码 ,那执行结果是?
代码2:
执行结果:
注:finally里的return覆盖掉了try里的return;
(3)如果try后面有个catch块,里面有return语句,那么finally语句会不会执行?
代码:
执行结果:
在finally块里也加上return语句:
结果:
注:如果finally里没有return语句,而catch里有return语句,则执行catch里的return语句; 而如果finally里也有return语句,则返回finally里的return语句;即catch块不会影响finally的执行; finally语句块的作用就是为了保证无论出现什么情况,一定要执行的,那么finally里的代码肯定会执行,并且是在return前执行;
又如:执行结果是多少呢;
执行结果:
注:并不是try语句中return执行完之后才执行的finally; 而是在执行return b+=88时,分成了两步,先b+=88;再return b; 将return temp;放到System.out.println("finally块");后面,输出结果不变;
如果将finally语句改为:
如果finally没有返回语句覆盖的话,那原来的返回值就不会变,不管你是不是改变了要返回的哪个变量,所以返回的值依然不变;