gpt4 book ai didi

java - 给java对象赋值

转载 作者:行者123 更新时间:2023-12-01 19:22:10 25 4
gpt4 key购买 nike

我有以下代码:

Color3D pixel = new Color3D(200, 0, 0);  
Color3D temporal = pixel;
System.out.println(util.printColor("Pixel: ", pixel));
System.out.println(util.printColor("Temporal: ", temporal));
pixel.setR(0);
pixel.setG(200);
pixel.setB(0);
System.out.println(util.printColor("Pixel: ", pixel));
System.out.println(util.printColor("Temporal: ", temporal));

结果:

Pixel: r: 200, g: 0, b: 0  
Temporal: r: 200, g: 0, b: 0
Pixel: r: 0, g: 200, b: 0
Temporal: r: 0, g: 200, b: 0

我的 Color3D 类保存 RGB (int) 值。
我使用 object util 打印 Color3D 对象的 int 值。

如果您查看结果,由于某种原因,在更改像素对象的红色和绿色值后,我还修改了绿色的值,但我不希望出现这种行为。

我想要:

Pixel: r: 200, g: 0, b: 0  
Temporal: r: 200, g: 0, b: 0
Pixel: r: 0, g: 200, b: 0
Temporal: r: 200, g: 0, b: 0

创建对象时间的目的是为了将来的处理保存像素对象值。 future 对象时间也会发生变化...

最佳答案

您分配的是引用而不是对象。

// Create new Color3D object, and put reference in pixel reference variable
Color3D pixel = new Color3D(200, 0, 0);
// Copy reference from pixel reference variable to temporal reference variable
Color3D temporal = pixel;

您现在有两个引用变量持有对同一对象的相同引用。因此,任何修改都可以通过这两个变量可见。您可能想要类似的东西:

Color3D temporal  = new Color3D(pixel.getR(), pixel.getB(), pixel.getB());

我不知道这些是否是真正的方法,但你应该明白这个想法。请注意,这会创建一个新的独立对象。

关于java - 给java对象赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3640641/

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