我有一個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