Reference 这是参考副本还是浅显副本?

Reference 这是参考副本还是浅显副本?,reference,copy,stringbuffer,Reference,Copy,Stringbuffer,参考副本和浅层副本的区别是什么?如何填充StringBuffer数组?关于创建参考副本,该代码正确吗 import java.util.Arrays; public class ArrayRefCopy { public static int n = 3; public static void main(String[] args){ StringBuffer[] hel = new StringBuffer[n]; refCopy(hel)

参考副本和浅层副本的区别是什么?如何填充StringBuffer数组?关于创建参考副本,该代码正确吗

import java.util.Arrays;


public class ArrayRefCopy {
    public static int n = 3;
    public static void main(String[] args){
        StringBuffer[] hel = new StringBuffer[n];

        refCopy(hel);
        System.out.println(Arrays.toString(hel));


    }

    public static StringBuffer[] refCopy(StringBuffer[] bra){

        StringBuffer[] ber = new StringBuffer[n];
        return ber = bra;
    }
}

实际上,您的方法
refCopy()
根本不起任何作用

执行时,将对数组
hel
的引用传递到方法
refCopy()
,该方法将作为
bra
提供。在方法内部,创建一个新数组,并将对新数组的引用分配给
ber
。但是,在下一行中,您再次覆盖此引用,使用方法参数
bra
接收到的对数组
hel
的引用

然后返回对array
hel
的引用,但不使用返回的值

因此,
hel
仍然像以前一样保留对同一数组的引用,并且在
refCopy()
中创建的新数组超出范围,将被垃圾收集

关于参考副本和浅层副本的含义和定义,请用谷歌搜索术语。应该很容易找到一个全面的定义/解释。

这样行吗

import java.util.Arrays;


public class ArrayRefCopy {
    public static int n = 3;
    public static void main(String[] args){
        StringBuffer[] hel = new StringBuffer[n];

        refCopy(hel);
        System.out.println(Arrays.toString(hel));


    }

    public static StringBuffer[] refCopy(StringBuffer[] bra){

        StringBuffer[] ber = new StringBuffer[n];
        return ber = Arrays.copyOf(bra, n);
    }
}

这个“回答”一点用处都没有。好吧,如果我的出现惹恼了你,我很抱歉。