1.在方法中传递基本数据类型时,传入的值是原值的拷贝,所以在方法中改变此数据不会影响到原数据

2.在方法中传递引用数据类型时,传入的是引用的拷贝

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

列1:

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("b");
        test(list);
        System.out.println(list); // 打印b,a
    }
    
    private static void test(List<String> list) {
        //list = new ArrayList<>();
        list.add("a"); // 不改变该引用时,该引用指向的是原集合
        System.out.println(list);// 打印b,a
    }

改变原引用

    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("b");
        test(list);
        System.out.println(list); // 打印b
    }
    
    private static void test(List<String> list) {
        list = new ArrayList<>();// 使这个copy的引用指向新的集合
        list.add("a"); // 想新集合中添加元素
        System.out.println(list);// 打印a
    }

列2:

    public static void main(String[] args) {
        StringBuilder A = new StringBuilder("a");
        StringBuilder B = new StringBuilder("b");
        test(A, B);
        System.out.println(A);// 打印ab
        System.out.println(B);// 打印b
        
    }
    
    public static void test(StringBuilder A, StringBuilder B) {
        A.append(B);// 引用没有改变,会更新原有值,打印ab
        B = A;// 复制的引用指向A,原有引用不改变
    }
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄