在java中,同C++一样,是没有直接的二维数组的,其中二维数组的实现是多个一维数组重叠而成.
对于普通的一维数组:
int[] arr = new int[5];
//赋值[1,2,3,4,5]
这时,我们在执行
int[] b = a.clone();
如果操作
b[1] = 12;
此时,我们输出a[1]和b[1],发现值是1,10
得出结论:
对一维数组的拷贝操作是直接拷贝其中的值.而不是拷贝引用.
因此,如果此时有一个二维数组:
二维数组的构建方式是在0xa0的引用空间中存入其它一维数组的引用地址.
如果我们此时直接对二维数组进行拷贝操作.相当于:
我们可以看到,此时不过是将引用拷贝了一份儿而已,因此在访问新的拷贝的数组时,仍然访问原来的值.修改的也是原来的栈空间.