在Java代码中如果需要对定义的数组复制,有两种基本方式,如下代码所示:

public class test02 {
	public static void main(String[] args) {
		int[] arr = new int[]{1,23,4,5};
		for(int a:arr) {
			System.out.print(a+",");
		}
		System.out.println();
		//直接复制
		int[] arrcopy1 = arr;
		//数据复制
		int[] arrcopy2 = Arrays.copyOf(arr, arr.length);
		//改变原数组的值
		arr[1] = 2;
		for(int a:arrcopy1) {
			System.out.print(a+",");
		}
		System.out.println();
		for(int a:arrcopy2) {
			System.out.print(a+",");
		}
	}
}
输出:
原数组:1,23,4,5,
直接复制数组:1,2,4,5,
数据复制数组:1,23,4,5,

对输出分析可知,如果直接复制,在改变原数组arr的值后会返现,arrcopy1随之改变,这是因为这只是地址上的复制,他们指向同一个地址。
如果想要仅仅复制数据,可以通过Arrays.copyOf()方式。