gpt4 book ai didi

java - 当我修改一个变量时,两个变量都会改变

转载 作者:行者123 更新时间:2023-12-01 15:09:37 25 4
gpt4 key购买 nike

我正在做这样的算法:

public int[][] moveLeft(int m[][], int[] index){
Puzzle x = new Puzzle(m);
System.out.println(x);
int[][] p = m;
int temp = p[index[0]][index[1]];
p[index[0]][index[1]] = p[index[0]][index[1]-1];
p[index[0]][index[1]-1] = temp;
return p;
}

更具体地说,我想做的是改变某些值的位置并返回新的矩阵,但是当我调试时,我注意到值“m”也会改变,即使当我对值 p 进行更改。这里出了什么问题?

最佳答案

这是你的罪魁祸首:

int[][] p = m;

一旦执行此操作,pm 就会引用同一个确切的对象,因为 Java 中的数组是引用对象。对 p 内容的任何更改都会反射(reflect)在 m 中,因为 pm 是两个不同的名称单个对象。

如果您需要 p 成为 m 的副本,您应该显式地执行此操作。这是a link to an answer向您展示它是如何完成的。

关于java - 当我修改一个变量时,两个变量都会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504903/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com