美文网首页
二维数组的复制

二维数组的复制

作者: 听风1413 | 来源:发表于2018-06-06 21:36 被阅读0次

    最近在做公司的项目时,有这样一个需求,复制一个二维数组,然后改变新的二维数组中的部分值,当时没怎么想,直接采用如下方法:

    int [] [] a1 =new int [15] [15];

    int [] [] a2 =a1;

    for(int i=0;i<15;i++){

    for(int j=0;j<15;j++){

    a2[i][j]=a1[i][14-j];}}

    后来运行程序时,发现不正常了,找了半天才找到原因,原来是将a2中的值改变后,a1中对应的值也发生了变化,然后百度了一下,是这样解释的:数组是一个对象,a1和a2访问的是内存中的同一段数据,a1中的值发生改变,a2 中对应的值也会发生改变,正确的做法是:

    int [] [] a2 =new int [15] [15]; 每次new 都会在内存中开辟一个新的空间、因此两个数组访问的是不同的地址,改了后,程序可以正常的运行了。(基础真的很重要,看来要补补java知识了)。

    相关文章

      网友评论

          本文标题:二维数组的复制

          本文链接:https://www.haomeiwen.com/subject/ynpisftx.html