try{}里面有一个return语句,那么紧跟在这个try后的finally{}的code会不会被执行,什么时候被执行,在return前还是后?

来源:互联网 发布:python is 编辑:程序博客网 时间:2024/04/30 09:21

上代码:

package test;public class Main {static int i = 0;public static void main(String[] args) {Main main = new Main();int result = main.test();System.out.println("4:" + System.currentTimeMillis());System.out.println(result);System.out.println(i);}public int test() {try {i = 1;System.out.println("1:" + System.currentTimeMillis());try {Thread.sleep(3);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}return i;} finally {i = 2;System.out.println("2:" + System.currentTimeMillis());try {Thread.sleep(3);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}System.out.println("3:" + System.currentTimeMillis());}}}输出:1:13857025021852:13857025021883:13857025021914:138570250219112

从上面的代码可以看出在test()方法中先执行try里面的程序,当执行到return的时候,把返回值暂存着,再执行finally里面的程序,等finally的程序执行完后,return才真正执行返回动。另外,如果在finally里面又有一个return返回,最终的返回结果是在finally里面的return返回值,而不会是try里面的return返回值。