gpt4 book ai didi

Java - 一个对象等于另一个对象的行为

转载 作者:行者123 更新时间:2023-12-02 13:01:55 25 4
gpt4 key购买 nike

我在使用 Java 时遇到问题。这是代码:

class Nmb {

private int value ;

public Nmb ( int value ) {
this.value = value ;
}

public Nmb (Nmb number ) {
value = number.value ;
}

public void duplicate ( ) {
value = 2*value ;
}

public String toString ( ) {
return "" + value ;

}
public static void main ( String [ ] args ) {
Nmb a = new Nmb ( 3 ) ;
Nmb b = new Nmb ( a ) ;
Nmb c = b ;
a.duplicate ( ) ;
b.duplicate();
c.duplicate();
System.out.println ( a + "," + b + ","+ c ) ;

}
}

输出将为:6,12,12

我做了一些测试,发现执行 c.duplicate 时 b 和 c 的值为 12。为什么会出现这种情况?为什么c.duplicate调用对象b?当创建该对象时,c 不应该具有 b (3) 的值吗?当调用重复方法并得到结果 6,6,6 时,c 不应该使用 3 吗?对象 c 将始终与对象 b 连接,并且其中一个的值始终取决于另一个的值?

谢谢

最佳答案

这是因为 cb 是对同一对象的引用,因此它们都是指向同一对象的引用。

这里您将 b 分配给 c(也就是说,您实际上创建了一个引用,而不是一个新对象):

Nmb c = b ;

因此,执行 c.duplicate() 将适用于 bc

为了更清楚地说明:

                      ______________
b (reference) -> | |
| Num object |
c (reference) -> |______________|

关于Java - 一个对象等于另一个对象的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44266263/

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