我有这段 Java 代码:
boolean[][] defaultBoard = {{false, false, false},
{false, false, false},
{false, false, false}};
Board board = new Board(defaultBoard);
Board nextBoard = new Board(defaultBoard);
nextBoard.getBoard()[1][5] = true;
board.printBoard();
打印板
:
public void printBoard() {
for (boolean row[] : board) {
for (boolean cell : row) {
System.out.print( cell ? "#" : "." );
}
System.out.println();
}
System.out.println();
}
但它返回
...
.#.
...
这让我觉得 nextBoard
和 board
有相同的内存地址。我的问题是:如何创建 nextBoard
的副本,以便在编辑 nextBoard
时,也不会编辑 board
?
最佳答案
不是 board
和 nextBoard
是一样的。它是您传递给构造函数的 defaultBoard
数组。您需要传递不同的数组。否则,您只是在修改同一个数组。
更好的是,为了确保 Board
的实例始终包含一个新数组,我建议在构造函数中对数组进行深度复制。
关于java - 在 Java 中复制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16501594/