【问题标题】:Java is updating a variable when I don't want it to [duplicate]当我不希望它[重复]时,Java正在更新一个变量
【发布时间】:2021-01-14 02:08:14
【问题描述】:

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

所以我在运行函数中有这些代码行:

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,如果是,我该如何防止这种情况发生?

【问题讨论】:

    标签: java


    【解决方案1】:

    = 只是分配对数组的引用。它不会复制它们。

    解决方法是在阵列上调用clone()。这是一个副本,所以对于int[][]StringBuilder[] 来说会有奇怪的行为。

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

    【讨论】:

      【解决方案2】:

      原始类型以外的任何东西都分配一个引用。 int[] 实际上是一个对象。另一张海报推荐克隆,同上。

      【讨论】:

        猜你喜欢
        • 2015-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-10
        • 2015-02-15
        • 2019-05-22
        • 1970-01-01
        相关资源
        最近更新 更多