Java中数组的复制

首先需要明确的是Java中数组的复制是引用传递,而不是值传递。

两者有什么不同呢,首先来看一个实例。

public class ArrayDemo {public static void main(String[] args) {int[] array1 = {1,2,3,4,5};int[] array2 = array1;for (int i = 0; i < array1.length; i++) {array1[i] += 1;}for (int i = 0; i < array2.length; i++) {System.out.print(array2[i]);System.out.print(" ");}}}

运行结果:

2 3 4 5 6 

看到了吗,array2会随着array1的变化而变化,array2只是对array1的一个引用。

那要进行复制怎么办呢?

有3中方法进行数组的复制

1. for循环进行遍历

public class ArrayDemo {public static void main(String[] args) {int[] array1 = {1,2,3,4,5};int[] array2 = new int[array1.length];for (int i = 0; i < array2.length; i++) {array2[i] = array1[i];}}}

2. Arrays类的copyOf方法

int[] array2 = Arrays.copyOf(array1, array1.length);

3. System类的arraycopy方法

int[] array3 = new int[array1.length];System.arraycopy(array1, 0, array3, 0, array1.length);

具体每个参数的意思,参考Java API文档。

那二维数组的复制会出现什么情况呢?明白了二维数组时数组的数组,其实也很容易想明白。复制的方法同样有3中,下面只给出其中一种的实例:

int[][] matrix2 = new int[row][column];for (int i = 0; i < row; i++) {    matrix2[i] = Arrays.copyOf(matrix1[i], column);}

即对利用循环对二维数组的每一行进行拷贝操作,这样才能得到一个真正的拷贝数组。

也就越容易失败,还不如怀揣一颗平常心,“但行好事,莫问前程”,往往成功的几率反而更大些

Java中数组的复制

相关文章:

你感兴趣的文章:

标签云: