gpt4 book ai didi

java - 改变一个变量会改变另一个

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:30:58 28 4
gpt4 key购买 nike

当我创建一个球的实例,然后将其复制到另一个变量时,更改原始变量也会更改球的副本。例如,以下面这个非常简单的例子为例:

class Ball() {
Color _color;
public Ball(Color startColor) {
_color = startColor;
}
public void setColor(Color newColor) {
_color = newColor;
}
}
Ball myBall = new Ball(black);
Ball mySecondBall = myBall;
myBall.setColor(white);

我已经省略了 _color 的访问器方法,但是如果我得到球的颜色,它们现在都是白色的!所以我的问题是:

  • 为什么改变一个对象会改变它的副本,并且
  • 有没有办法复制一个对象,以便您可以独立更改它们?

最佳答案

球 mySecondBall = myBall;

这不会创建副本。您分配一个引用。这两个变量现在都引用同一个对象,这就是为什么更改对两个变量都可见的原因。 你应该做一些事情,比如创建一个复制相同颜色的 new Ball:

球 mySecondBall = new Ball(myBall.getColor());

关于java - 改变一个变量会改变另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11369173/

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