如何在Java中的对象内复制2D数组?

时间:2016-03-27 16:02:23

标签: java arrays multidimensional-array

我已经按如下方式定义了一个类:

Public class Board{
    public static final int SIZE = 4;
    private static char[][] matrix = new char[SIZE][SIZE];

    public Board(){
        clear();//just fills matrix with a dummy character
    }

    public void copy(Board other){//copies that into this
        for(int i = 0; i < SIZE; i++){
            for(int j = 0; j < SIZE; j++){
                matrix[i][j] = other.matrix[i][j];
            }
        }
    }

    //a bunch of other methods
}

所以这就是我的问题:当我尝试复制时,如myBoard.copy(otherBoard),对一个电路板所做的任何更改都会影响另一个电路板。我复制了单独的原始元素,但两个板的matrix引用是相同的。我以为我是复制元素,为什么指针一样?我该怎么做才能解决这个问题?

2 个答案:

答案 0 :(得分:5)

matrixstatic,因此所有Board个对象都共享相同内容。

删除static以使每个Board拥有自己的矩阵。

private static char[][] matrix = new char[SIZE][SIZE];   <-- Because of this line
matrix[i][j] = other.matrix[i][j];                       <-- These two are the same.

答案 1 :(得分:2)

更改

private static char[][] matrix = new char[SIZE][SIZE];

private char[][] matrix = new char[SIZE][SIZE];

static表示此数组只有一个实例。