Java正在更新一个我不想更新的变量

Java正在更新一个我不想更新的变量,java,Java,嗨,我对编程比较陌生,所以这可能是个愚蠢的问题 因此,我在运行函数中有以下几行代码: int[] bstate = this.state; System.out.println(Arrays.toString(bstate)); nextMove(); int[] astate = this.state; System.out.println(Arrays.toString(astate)); System.out.println(Arrays.toString(bstate)); 检查n

嗨,我对编程比较陌生,所以这可能是个愚蠢的问题

因此,我在运行函数中有以下几行代码:

int[] bstate = this.state;
System.out.println(Arrays.toString(bstate));

nextMove();

int[] astate = this.state;
System.out.println(Arrays.toString(astate));
System.out.println(Arrays.toString(bstate));
检查nextMove是否更改了对象的状态,但我认为当状态被更新时,bstate也被更新了,因为在方法调用之后,bstate与astate相同,而之前没有

所以我想知道,当我的方法更新状态时,它们是否也会隐式地更新bstate,如果是这样,我如何防止这种情况发生?

=只是给数组分配一个引用。它不会复制它们

修复方法是在阵列上调用clone。这是一个浅拷贝,所以对于int[]]或StringBuilder[]来说会有奇怪的行为

=仅为数组分配一个引用。它不会复制它们

修复方法是在阵列上调用clone。这是一个浅拷贝,所以对于int[]]或StringBuilder[]来说会有奇怪的行为


基元类型以外的任何类型都会指定引用。int[]实际上是一个对象。另一张海报建议克隆,同上。

除原语类型以外的任何其他类型都会指定引用。int[]实际上是一个对象。另一张海报建议克隆,同上

int[] bstate = this.state.clone();