文章标题

今天突发奇想造了如下代码,测试二维数组,才发现曾经对于二维数组的理解还是太浅陋了。

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维数组的一维数组而已……

所以,我之前对于多维数组其实依然还是一维数组的理解是正确的。
完毕

见笑见笑!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值