二维数组中的四种拷贝

如同一维数组一样,二维数组中也有四种拷贝方式,且与一维数组中的拷贝方式一样

分别为:

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


引用类型数组


值得注意的是引用类型的二维数组在栈中的存储方式。上述就是二维数组的四种拷贝的用法。

(新手入门,如有错误,请多多指教)

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页