注意:
在Java中直接等于,如:int[] num = new int[10]; int[] res = new int[10]; res = num;
- 1
- 2
- 3
复制的是地址,两个数组共同使用一个内存,当一个数组进行修改时,另一个数组的值也会发生变化。
在Java中,数组是一种用于存储固定大小的元素集合的数据结构。有时候我们需要将一个数组的内容复制到另一个数组中,Java提供了多种方法来实现这个目的。
最简单的方法是使用循环遍历原始数组,并将每个元素逐个复制到新数组中。这种方法需要手动编写代码来复制每个元素,适用于简单的情况。
for (int i = 0; i < num.length; i++) {
res[i] = num[i];
}
这种方法适用于任何类型的数组,包括基本类型和引用类型。
Java提供了Arrays类,其中包含许多有用的数组操作方法。其中一个是copyOf方法,可以使用它来复制数组的指定部分或整个数组。
该方法将源数组的内容复制到一个新数组中,并返回该新数组。如果需要复制数组的一部分,可以指定起始和结束位置。
Arrays.copyOf(原数组, 目标数组长度);
res = Arrays.copyOf(num, num.length);
除了Arrays类的copyOf方法外,Java还提供了System类的arraycopy方法,可以在原始数组和目标数组之间高效地复制数组的内容。
该方法的参数分别为源数组、源数组的起始位置、目标数组、目标数组的起始位置以及要复制的元素数量。
System.arraycopy(原数组,开始位置,目标数组,开始位置,复制长度);
System.arraycopy(num, 0, res, 0, num.length);
二维数组与一维数组类似。
最简单的方法是使用循环遍历原始数组,并将每个元素逐个复制到新数组中。这种方法需要手动编写代码来复制每个元素,适用于简单的情况。
for (int i = 0; i < num.length; i++) {
for (int j = 0; j < num[i].length; j++) {
res[i][j] = num[i][j];
}
}
这种方法适用于任何类型的数组,包括基本类型和引用类型。
Java提供了Arrays类,其中包含许多有用的数组操作方法。其中一个是copyOf方法,可以使用它来复制数组的指定部分或整个数组。
该方法将源数组的内容复制到一个新数组中,并返回该新数组。如果需要复制数组的一部分,可以指定起始和结束位置。
Arrays.copyOf(原数组, 目标数组长度);
for (int i = 0; i < num.length; i++) {
res[i] = Arrays.copyOf(num[i], num[i].length);
}
除了Arrays类的copyOf方法外,Java还提供了System类的arraycopy方法,可以在原始数组和目标数组之间高效地复制数组的内容。
该方法的参数分别为源数组、源数组的起始位置、目标数组、目标数组的起始位置以及要复制的元素数量。
System.arraycopy(原数组,开始位置,目标数组,开始位置,复制长度);
for (int i = 0; i < num.length; i++) {
System.arraycopy(num[i], 0, res[i], 0, num[i].length);
}
总结
简单介绍了Java中数组复制的三种方法。
使用循环进行逐个元素复制适用于简单的情况,而使用Arrays类的copyOf方法和System类的arraycopy方法可以提供更便捷和高效的复制功能。
根据实际需求选择适合的方法来对数组进行复制,可以提高代码的效率和可读性。