Java 赋值运算符有问题
嗨,我正在用android中的AI做一个棋盘游戏 我遇到了一个对我来说毫无意义的情况 代码:Java 赋值运算符有问题,java,android,arrays,Java,Android,Arrays,嗨,我正在用android中的AI做一个棋盘游戏 我遇到了一个对我来说毫无意义的情况 代码: for(int y=0;y
for(int y=0;y
当我使virtualBoard等于mBoard时,我只是将一个数组分配给另一个数组,但是为什么日志会不同呢?怎么可能呢
virtualBoard = mBoard; // int arrays
virtualBoard[x] = nextMove(counter);
在第一个赋值中,您没有创建数组的副本。而是数组引用的副本
因此,您的virtualBoard
引用了与mBoard
相同的数组。因此,您使用任何引用对数组
所做的任何更改都将反映在其他引用
中
在第一个赋值中,您没有创建数组的副本。而是数组引用的副本
因此,您的virtualBoard
引用了与mBoard
相同的数组。因此,您使用任何引用对数组
所做的任何更改都将反映在其他引用
中
当我使virtualBoard等于mBoard时,我只需将一个数组分配给另一个数组
否,您将mBoard
的值分配给virtualBoard
。这些变量的值不是数组,而是引用。因此,在该赋值之后,mBoard
和virtualBoard
的值是对同一数组的引用。然后在后续语句中更改该数组的内容
有点像这样的情况:
- 我有一张写着我家地址的纸
- 我拿了一份那张纸给弗雷德
- 弗雷德走到纸上的地址,把前门漆成绿色
- 当我到家时,我看到我的前门是绿色的
当我使virtualBoard等于mBoard时,我只需将一个数组分配给另一个数组
否,您将mBoard
的值分配给virtualBoard
。这些变量的值不是数组,而是引用。因此,在该赋值之后,mBoard
和virtualBoard
的值是对同一数组的引用。然后在后续语句中更改该数组的内容
有点像这样的情况:
- 我有一张写着我家地址的纸
- 我拿了一份那张纸给弗雷德
- 弗雷德走到纸上的地址,把前门漆成绿色
- 当我到家时,我看到我的前门是绿色的
如果阵列不同,为什么日志不会不同?如果阵列不同,为什么日志不会不同?非常感谢!我把数组和基元类型搞砸了:(非常感谢!我把数组和基元类型搞砸了:(
virtualBoard = mBoard; // int arrays
virtualBoard[x] = nextMove(counter);