我有一个Java问题。这是代码: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
我已经做了一些测试,我已经看到,b和c取12的值被执行时c.duplicate 。为什么会发生?为什么c.duplicate调用对象b?在创建对象时,不应该具有b(3)的值,并且在使用6,6,6的结果调用重复方法时使用3的值?对象c将始终与对象b连接,而对象的值将始终取决于对象的值。
谢谢
'B'和'C'不是两个相等的对象。他们是同一个对象。这就是'c = b'所做的。 – khelwood
是不是C指向与B相同的参考? –
将变量看作可放置在对象上的标签。您已将同一个对象标记为“b”和“c”,因此它们始终显示相同的值应该不足为奇。 – biziclop