嗨,我正在安卓机器人中使用AI进行棋盘游戏。
我遇到了一种对我没有意义的情况。
代码:
for(int y = 0; y < BOARD_SIZE ; y++)
{
Log.i(TAG, "before calling virtual mBoard:" + mBoard[y]);
}
virtualBoard = mBoard; // int arrays
virtualBoard[x] = nextMove(counter);
for(int j = 0; j < BOARD_SIZE ; j++)
{
Log.i(TAG, "before calling AIValue mBoard:" + mBoard[j]);
}
当我使virtualBoard等于mBoard时,我只是将一个数组分配给另一个数组,但为什么日志不同?怎么可能?
答案 0 :(得分:5)
当我使virtualBoard等于mBoard时,我只是将一个数组分配给另一个数组
不,您将mBoard
的值指定给virtualBoard
。这些变量的值不是数组 - 它们是引用。因此,在该赋值之后,mBoard
和virtualBoard
的值是对同一数组的引用。然后,您可以在后续语句中更改该数组的内容。
有点像这种情况:
答案 1 :(得分:1)
virtualBoard = mBoard; // int arrays
virtualBoard[x] = nextMove(counter);
在第一个作业中,您没有创建阵列的副本。而是对数组的引用的副本。
因此,您的virtualBoard
引用了与mBoard
相同的数组。因此,您使用任何array
对reference
所做的任何更改都会反映在另一个reference
上。