Java复制数组-参考

Java复制数组-参考,java,arrays,matrix,copy,Java,Arrays,Matrix,Copy,我有一个数组int[3][3],初始位置如下: (A) 我有一个方法,它接受“0”元素并随上面的元素更改,因此下一个状态是: (B) 但问题是,我想用这个位置创建一个新的数组(称为aux),并且不要覆盖块数组(a) 这是我的密码: //Creating array B int[][] aux = new int[3][3]; aux = block; //load the values of original array aux[line][row] = aux[line-1][row]; au

我有一个数组int[3][3],初始位置如下:

(A)

我有一个方法,它接受“0”元素并随上面的元素更改,因此下一个状态是:

(B)

但问题是,我想用这个位置创建一个新的数组(称为aux),并且不要覆盖块数组(a)

这是我的密码:

//Creating array B
int[][] aux = new int[3][3];
aux = block; //load the values of original array
aux[line][row] = aux[line-1][row];
aux[line-1][row] = 0;
System.out.println("INITIAL BLOCK VALUES");
            System.out.println(
                            bloco[0][0] +""+
                            bloco[0][1] +""+
                            bloco[0][2] +
                            "\n"+
                            bloco[1][0]+
                            bloco[1][1]+
                            bloco[1][2]+
                            "\n"+
                            bloco[2][0] +
                            bloco[2][1] +
                            bloco[2][2]
                    );



            //Cloning original array to a new one
            int[][] aux = bloco.clone();

            //Here what I'm doing is changing the first element of AUX, just for test
            aux[0][0] = 9;




            // Block array shouldnt be affected! Lets check it out:

            System.out.println("FINAL BLOCK VALUES");
            System.out.println(
                                    bloco[0][0] +""+
                            bloco[0][1] +""+
                            bloco[0][2] +
                            "\n"+
                            bloco[1][0]+
                            bloco[1][1]+
                            bloco[1][2]+
                            "\n"+
                            bloco[2][0] +
                            bloco[2][1] +
                            bloco[2][2]
                    );
但是当我检查输出时,我也覆盖了原始数组(块)

因此,我让数组块和数组AUX具有相同的值,并且没有将数组块与原始数据一起保留

===========================================================================

编辑:

我尝试使用clone和copyOf函数,但结果也影响了原始阵列。 这是我的密码:

//Creating array B
int[][] aux = new int[3][3];
aux = block; //load the values of original array
aux[line][row] = aux[line-1][row];
aux[line-1][row] = 0;
System.out.println("INITIAL BLOCK VALUES");
            System.out.println(
                            bloco[0][0] +""+
                            bloco[0][1] +""+
                            bloco[0][2] +
                            "\n"+
                            bloco[1][0]+
                            bloco[1][1]+
                            bloco[1][2]+
                            "\n"+
                            bloco[2][0] +
                            bloco[2][1] +
                            bloco[2][2]
                    );



            //Cloning original array to a new one
            int[][] aux = bloco.clone();

            //Here what I'm doing is changing the first element of AUX, just for test
            aux[0][0] = 9;




            // Block array shouldnt be affected! Lets check it out:

            System.out.println("FINAL BLOCK VALUES");
            System.out.println(
                                    bloco[0][0] +""+
                            bloco[0][1] +""+
                            bloco[0][2] +
                            "\n"+
                            bloco[1][0]+
                            bloco[1][1]+
                            bloco[1][2]+
                            "\n"+
                            bloco[2][0] +
                            bloco[2][1] +
                            bloco[2][2]
                    );
输出为:

INITIAL BLOCK VALUES
111
111
101
FINAL BLOCK VALUES
911
111
101
有什么想法吗

OBS:此代码位于名为“Node”的类的函数中,构造函数是:

public Nodo( int[][] blocos )
        {
            this.bloco = blocos;
        }

此程序显示在不更改原始数组值的情况下将原始数组复制到新数组中

 class Array
 {
public static void main (String[] args) {

   int[][] block = new int[3][3];
 //load the values of original array

  block[0][0] = 1;
  block[0][1] = 1;
  block[0][2] = 1;
  block[1][0] = 1;
  block[1][1] = 1;
  block[1][2] = 1;
  block[2][0] = 1;
  block[2][1] = 0;
  block[2][2] = 1;
  int[] [] aux=new int[3][3];
  for(int i=0;i<3;i++)
  {
for(int j=0;j<block[i].length;j++)
     {
  aux[i][j]=block[i][j];
     }
 System.out.print("\n");
  }
 aux[1][1]=0;//replace array value 
 aux[2][1]=1;//replace array value 1
 System.out.print("Old   Array \n");
 for(int i=0;i<3;i++)
 {
for(int j=0;j<block[i].length;j++)
   {
 System.out.print(block[i][j]);
   }
 System.out.print("\n");
 }
 System.out.print("New  Array \n");
 for(int i=0;i<3;i++) 
 {
for(int j=0;j<block[i].length;j++)
    {
  System.out.print(aux[i][j]);
    }
       System.out.print("\n");
   }
  }
 }

请参考这个问题:检查这个-@KangLi我刚刚编辑了这个问题,我仍然有问题=/有什么想法吗?@hellboy它也不起作用,不知道确切的原因。。
   Old  Array 
    111
    111
    101
   New Array 
    111
    101
    111