今天突发奇想造了如下代码,测试二维数组,才发现曾经对于二维数组的理解还是太浅陋了。
int A[] = new int[] { 1, 2, 3, 4 };
int B[] = new int[] { 1, 2, 3, 4, 5 };
int D[] = new int[] { 1, 2, 3 };
int C[][] = new int[3][4];
System.out.println("Before");
for (int i = 0; i < C.length; i++) {
for (int j = 0; j < C[i].length; j++) {
System.out.print(C[i][j] + "\t");
}
System.out.println("\tC["+i+"]=" + C[i].length);
}
C[0] = A.clone();
C[1] = B.clone();
C[2] = D.clone();
System.out.println("Later");
for (int i = 0; i < C.length; i++) {
for (int j = 0; j < C[i].length; j++) {
System.out.print(C[i][j] + "\t");
}
System.out.println("\tC["+i+"]=" + C[i].length);
}
按照之前对于数组的理解,我会认为这段代码的结果会依然还是一个三行四列的数组,但是结果却是……
Before
0 0 0 0 C[0]=4
0 0 0 0 C[1]=4
0 0 0 0 C[2]=4
Later
1 2 3 4 C[0]=4
1 2 3 4 5 C[1]=5
1 2 3 C[2]=3
也就是说,赋值之后,这个所谓的二维数组变成了一个装着三个n维数组的一维数组而已……
所以,我之前对于多维数组其实依然还是一维数组的理解是正确的。
完毕
见笑见笑!!!