本文描述了将一个数组值复制到另一个数组中的方法。
不要忘记在Java中数组是一个对象,这意味着管理值集合的数组变量是一个引用,一个指针,它包含数组第一个元素的地址。
所以必须知道: 数组的元素 不是这样复制的:
// 初始化数组
int
[] oldArray = {
1
,
2
3
4
5
};
//新数组
[] newArray;
// 浅复制-复制引用值
newArray = oldArray;
// 使用第二个引用来打印一个值
// 打印值3
System.out.println(newArray[
]);
很少有情况需要这样的“复制”(浅复制),但大多数情况下这是一个错误。最后,没有复制初始数组元素,但是在新引用 new array中复制了第一个引用值 oldArray。
即使它看起来是值的成功复制(显示一个值证明了这一点),问题是通过两个引用之一的值的任何更改都在第二个引用可见。
// 使用第一个数组引用修改一个值
oldArray[
0
] =
100
;
// 使用第二个引用打印第一个值
// 也是100
如果这种情况不是我们想要的,那将是一个很难管理的情况,因为它是一个逻辑错误,不会产生编译错误或者运行时错误。
我们所看到的被称为 浅拷贝,因为它只发生在参考层。我们最感兴趣的是内容的拷贝—— 深度拷贝。
在Java中,有两种可能将值从一个数组复制到另一个数组:
自己实现复制算法;
使用API函数。
//定义一个新的数组,并分配空间
[] newArray =
new
[oldArray.length];
// 复制值
for
(
i =
;i < oldArray.length;i++)
newArray[i] = oldArray[i];
System.arraycopy(oldArray,
, newArray,
, oldArray.length);
原文链接:https://codingdict.com/