如同一维数组一样,二维数组中也有四种拷贝方式,且与一维数组中的拷贝方式一样
分别为:
1.for循环拷贝
2.clone
3.System.arraycopy
4.Arrays.copyOf
四种用法在上节都已经讲过,那让我们看看在二维数组中与在一维数组中会有什么不
同。
1.for循环拷贝
输出结果
可以看出改变array[0][0]的值array2[0][0]的值并不发生改变,原因是array2拷贝只是
让array所引用的地址拷贝得到了array中的值,本质上与array引用值的地址没有关
系,所以改变array2中的值,array中的值并不发生改变。这里我们用图示再来看看
然后让我们看看引用类型的二维数组
拷贝的函数
输出结果
改变t1[0][0]的值后t2[0][0]的值也一起改变,原因是t1,t2是引用类型的数组。数组中存储的是一块地址。指向储存值得地址,拷贝得到的也是地址,且是同一块区域的地址,改变任一地址中的值,另一个对应位置的值也发生相应改变。我们用图示来了解一下
可以清楚的看出拷贝后,数组中的地址与原数组对应同一块地址。属于浅拷贝。剩下三种拷贝方式与第一种类似,我们就只举例它的用法。
2.clone
引用类型的数组
3.System.arraycopy
引用类型数组
4.Arrays.copyOf
引用类型数组
值得注意的是引用类型的二维数组在栈中的存储方式。上述就是二维数组的四种拷贝的用法。
(新手入门,如有错误,请多多指教)