Reference 这是参考副本还是浅显副本?
参考副本和浅层副本的区别是什么?如何填充StringBuffer数组?关于创建参考副本,该代码正确吗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)
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
的引用
然后返回对arrayhel
的引用,但不使用返回的值
因此,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);
}
}
这个“回答”一点用处都没有。好吧,如果我的出现惹恼了你,我很抱歉。