zoukankan      html  css  js  c++  java
  • finally和return的执行顺序

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

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

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

    // 测试 修改值类型
    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执行");
        }
    }

    参考: http://hollischuang.gitee.io/tobetopjavaer/#/basics/java-basic/order-about-finllly-return

  • 相关阅读:
    sqlldr、sqluldr2_w64案例
    查看oracle的sid和sevice_name
    杂记
    GAN学习
    Leetcode 第 217 场周赛
    牛客编程巅峰赛S2第4场
    SAR图像变化检测的一点想法
    Fire! UVA
    HDU
    HDU
  • 原文地址:https://www.cnblogs.com/coloz/p/12921420.html
Copyright © 2011-2022 走看看