首页 > 其他 > 详细

finally和return的执行顺序

时间:2020-05-11 17:39:18      阅读:41      评论:0      收藏:0      [点我收藏+]

 

finally和return的执行顺序

try() ??有?个return语句, 那么后?的finally{}??的code会不会被执?, 什么时候执?, 是在return前还是return后?

如果try中有return语句, 那么finally中的代码还是会执?。因为return表?的是要整个?法体返回, 所以,finally中的语句会在return之前执?。

但是return前执行的finally块内,对数据的修改效果对于引用类型和值类型会不同

public static void main(String[] args) {
    int f = f();
    System.out.println(f);//0
    int[] f2 = f2();
    System.out.println(f2[0]);//1
}

// 测试 修改值类型
static int f() {
    int ret = 0;
    try {
        return ret;  // 返回 0,finally内的修改效果不起作用
    } finally {
        ret++;
        System.out.println("finally执行");
    }
}


// 测试 修改引用类型
static int[] f2() {
    int[] ret = new int[]{0};
    try {
        return ret;  // 返回 [1],finally内的修改效果起了作用
    } finally {
        ret[0]++;
        System.out.println("finally执行");
    }
}

 

文章来源:https://hollischuang.gitee.io/tobetopjavaer/#/basics/java-basic/order-about-finllly-return

finally和return的执行顺序

原文:https://www.cnblogs.com/ooo0/p/12870463.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!