【发布时间】:2013-11-12 09:51:35
【问题描述】:
我正在为 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] 创建新对象,而旧的“Pine”StringBuilder 对象正在被 num4 数组引用吗?
如果可以的话,谁能给我一个 System.arraycopy 的例子,这个浅拷贝很明显?
提前致谢, 克里斯约弗
【问题讨论】:
标签: java arrays shallow-copy