例如,
private char[][]board ;
public voi foo(char[][] board) {
this.board = board; //so, what's happening in this line. just pass the reference?
//
}
另外,如果我修改此.board,它会反映到原始主板吗?
答案 0 :(得分:1)
是的,它只是复制引用,而不是数据。
为了更明显,让我们更改您的变量名称:
private char[][] firstBoard;
public void foo(char[][] secondBoard) {
this.firstBoard = secondBoard;
}
调用foo()
函数后,firstBoard
和secondBoard
都将指向同一个2D数组。所以,如果你这样做:
secondBoard[0][0] = 'X';
System.out.println(firstBoard[0][0]);
......然后' X'将打印出来,因为更改secondBoard指向的数组正在更改firstBoard指向的相同数组。我很惊讶你没有写一个小测试程序来测试它。
推荐阅读:
答案 1 :(得分:0)
在你的情况下,任何数组的更改都将应用于另一个数组,因此如果你想继续使用这两个数组,你应该像这样逐个复制数据:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
t.board[i][j]=board[i][j];
}
}
复制后,您可以通过更改另一个来更改数组。