我是一个Java考试的学习者,我实践中发现的和理论教导的有所不同。
以下是代码:
输出结果为:
如果这是一个浅拷贝,为什么会发生这种情况呢?
难道是因为num3[0]正在创建新对象,而旧的"Pine" StringBuilder对象被num4数组所引用?
如果是这样,请问是否有人能给出一个System.arraycopy的例子,其中表现出这种浅拷贝?
提前致谢, 克里斯扬奥费尔
以下是代码:
StringBuilder num3[]= new StringBuilder[2];
num3[0]= new StringBuilder("Pine");
num3[1]= new StringBuilder("Oak");
StringBuilder num4[] = new StringBuilder[2];
System.arraycopy(num3, 0, num4, 0, 2);
System.out.println(num3[0]==num4[0]);
System.out.println(num4[0]);
num3[0] = new StringBuilder("Choc");
System.out.println(num3[0]);
System.out.println(num4[0]);
输出结果为:
true Pine Choc Pine其中的true表示这是一个浅拷贝,因为num4[0]与num3[0]引用同一个对象。但当我改变num3[0]时,我期望num4[0]也会改变。
如果这是一个浅拷贝,为什么会发生这种情况呢?
难道是因为num3[0]正在创建新对象,而旧的"Pine" StringBuilder对象被num4数组所引用?
如果是这样,请问是否有人能给出一个System.arraycopy的例子,其中表现出这种浅拷贝?
提前致谢, 克里斯扬奥费尔