我正在为 Java 考试而学习,我发现实际上与理论上讲授的内容不同。
下面是代码:
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 语句表明它是浅拷贝,因为 num4[0] 引用了 num3[0] 的相同对象。但是当我改变 num3[0] 时,我希望 num4[0] 也会改变。
如果它是浅拷贝,为什么会发生这种情况?
是因为为 num3[0] 创建了新对象,而 num4 数组引用了旧的“Pine”StringBuilder 对象吗?
如果是这样,谁能给我一个 System.arraycopy 的例子,这个浅拷贝很明显?
提前致谢, 克里斯约弗