在分配操作员上遇到麻烦

use*_*840 0 java arrays android

嗨,我在Android中使用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]);
    }
Run Code Online (Sandbox Code Playgroud)

当我使virtualBoard等于mBoard时,我只是将一个数组分配给另一个数组,但为什么日志不同?怎么可能?

Jon*_*eet 5

当我使virtualBoard等于mBoard时,我只是将一个数组分配给另一个数组

不,你指定的值mBoardvirtualBoard.这些变量的值不是数组 - 它们是引用.这样分配后,值mBoardvirtualBoard是同一个数组引用.然后,您可以在后续语句中更改该数组的内容.

这有点像这种情况:

  • 我的家庭住址上有一张纸
  • 我拿那张纸的副本,交给弗雷德
  • 弗雷德去了那张纸上的地址并将前门涂成绿色.
  • 当我回到家时,我看到我的前门是绿色的.