java finally return

来源:互联网 发布:application.js下载 编辑:程序博客网 时间:2024/06/18 15:07

执行顺序:

①先执行return操作

②确定返回值,但是此时并不会立刻返回。(如果返回值是非引用类型(int等),即使在finally改值也没用,也只会返回第一步中计算出来的返回值。)

③执行finally中的操作(如果该finally操作中也包含有return操作则会直接返回,也就是说正常的return会被finally的return覆盖)

④finally里面的内容执行完了,程序则会返回第二步的返回值。


●正常程序

public class FinallyTest1 {    public static void main(String[] args) {                System.out.println(test11());    }        public static String test11() {        try {            System.out.println("try block");           return test12();      } finally {           System.out.println("finally block");       }  }  public static String test12() {       System.out.println("return statement");       return "after return";   }    }
运行结果为:

try blockreturn statementfinally blockafter return

●finally里有return

public class FinallyTest2 {    public static void main(String[] args) {        System.out.println(test2());    }    public static int test2() {        int b = 20;        try {            System.out.println("try block");            return b += 80;        } catch (Exception e) {            System.out.println("catch block");        } finally {            System.out.println("finally block");            if (b > 25) {                System.out.println("b>25, b = " + b);            }            return 200;        }        // return b;    }}
运行结果是:

try blockfinally blockb>25, b = 100200

●finally里改变int值

public class FinallyTest3 {    public static void main(String[] args) {        System.out.println(test3());    }    public static int test3() {        int b = 20;        try {            System.out.println("try block");            return b += 80;        } catch (Exception e) {            System.out.println("catch block");        } finally {            System.out.println("finally block");            if (b > 25) {                System.out.println("b>25, b = " + b);            }            b = 150;        }        return 2000;    }}
运行结果是:

try blockfinally blockb>25, b = 100100


原创粉丝点击