运行以下两段代码:
代码1:
String[][] sa1 = new String[][]{{“a11”, “a12”},{“a21”, “a22”}};
String[][] sa2 = new String[sa1.length][sa1[0].length];
System.arraycopy(sa1,0, sa2, 0, sa1.length);
System.out.println(“sa1[0][0] : ” + sa1[0][0]);
System.out.println(“sa2[0][0] : ” + sa2[0][0]);
sa1[0][0] = “XXXXX”;
System.out.println(“———————“);
System.out.println(“sa1[0][0] : ” + sa1[0][0]);
System.out.println(“sa2[0][0] : ” + sa2[0][0])
输出:
sa1[0][0] : a11
sa2[0][0] : a11
———————
sa1[0][0] : XXXXX
sa2[0][0] : XXXXX
代码2:
String[] sa1 = new String[]{“a11”, “a12”};
String[] sa2 = new String[sa1.length];
System.arraycopy(sa1,0, sa2, 0, sa1.length);
System.out.println(“sa1[0] : ” + sa1[0]);
System.out.println(“sa2[0] : ” + sa2[0]);
sa1[0] = “XXXXX”;
System.out.println(“———————“);
System.out.println(“sa1[0] : ” + sa1[0]);
System.out.println(“sa2[0] : ” + sa2[0]);
输出:
sa1[0] : a11
sa2[0] : a11
———————
sa1[0] : XXXXX
sa2[0] : a11
可见,当数组是两维时,对源数组的改变也影响到了目标数组,但一维数组却不会有问题。要当心的。。。