二维数组中的四种拷贝

原创 2018年04月15日 17:24:46

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

分别为:

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


引用类型数组


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

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

Java中对于二维数组的clone

昨天写Java的时候写了一行int[][] c = a.clone(),结果发现后续对c的操作同时也作用到了a上了,当时一脸懵逼啊,说好的clone呢,怎么引用又扯不干净了。单步调试看看,好家伙,还真...
  • EventQueue
  • EventQueue
  • 2017-02-08 11:05:27
  • 1105

c#二维数组传递与拷贝

传递       copy string[,] a = new string[1, 2];//原数组 a[0, 0] = "a"; a[0, 1] = "b"; string[,]...
  • OnafioO
  • OnafioO
  • 2014-11-13 22:06:19
  • 4869

二维数组的拷贝

/*本来是要写矩阵的压缩存储,但是变成了两个数组的拷贝,拷贝即需要利用两层for循环先输出再存入另一个数组中 屏蔽的部分本来是想控制相同元素的再次存入,节省空间的问题,但是输出的结果却还是数组中所有的...
  • OnePiece_only
  • OnePiece_only
  • 2016-09-11 22:25:31
  • 1059

【java】数组复制几种方式比较

import java.util.Arrays; /** * System.arraycopy方法的使用。 * 从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束 */...
  • lzm18064126848
  • lzm18064126848
  • 2016-12-21 14:32:47
  • 655

Java中二维数组和一维数组的clone

要实现深度复制,可以用clone或者System.arrayCopy 如下面的代码 1 int[] a={3,1,4,2,5}; 2 int[] b=a.clone(); 3 b[0]=10;...
  • WALLEZhe
  • WALLEZhe
  • 2015-12-23 14:47:29
  • 2786

C#二维数组拷贝到另一个二维数组

网上找了下,没有找到关于二维数组拷贝到二维数组的相关内容。Array.Copy的使用方法中一般给的例子是一维数组。这里解释一种拷贝二维数组的方法,使用的仍然是Array.Copy的方法。 有如下数组:...
  • weixin_38089515
  • weixin_38089515
  • 2017-08-22 17:38:38
  • 819

数组和指针的实例和总结

  • 2010年10月10日 17:33
  • 5.54MB
  • 下载

Java中的二维数组和System.arraycopy

int [][] num = new int [3][5]; num[0][0] = 1; num[0][1] = 2; num[0][2] = 3; num[1][0] = 4; nu...
  • SushiPlus
  • SushiPlus
  • 2014-01-08 11:49:08
  • 2052

python中的二维数组

先看一段代码 [py] array = [0, 0, 0] matrix = [array*3] print matrix ## [[0,0,0,0,0,0,0,0,0]][/py] 这段...
  • wanghandou
  • wanghandou
  • 2017-09-08 08:43:30
  • 349

二维数组复制到另一个二维数组

int Pij[256][256];    原数组 int tempPij[256][256];    目标数组 memcpy(tempPij,Pij,sizeof(int)*256*256); m...
  • lingmengxiaotong
  • lingmengxiaotong
  • 2017-07-03 15:04:22
  • 100
收藏助手
不良信息举报
您举报文章:二维数组中的四种拷贝
举报原因:
原因补充:

(最多只允许输入30个字)