Javaに問題があります。 c.duplicateが実行されたとき6,12,12Java - 別のオブジェクトと等しいオブジェクトの振る舞い
私はいくつかのテストを行っていると私はBことが見ていると12の値を取るC:
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) ;
}
}
出力は次のようになります。これは、コードであります。なぜこれが起こるのですか?なぜc.duplicateがオブジェクトbを呼び出すのですか?そのオブジェクトが作成されたときにb(3)の値を持つべきではなく、6,6,6の結果で重複したメソッドが呼び出されたときに3で動作しますか?オブジェクトcは常にオブジェクトbに接続され、値1は常に他の値に依存しますか?
はc
がb
と同じオブジェクトへの参照であるので、これらは両方とも参照している同じオブジェクトにポイントというためです
'B'と 'C'は、二つの等しいオブジェクトではありません。それらは同じオブジェクトです。それは 'c = b'のことです。 – khelwood
はCと同じリファレンスをBと指していませんか? –
変数をオブジェクトに配置できるラベルと考えてください。同じオブジェクトに 'b'と' c'の両方のラベルを付けたので、常に同じ値を表示することは驚きではありません。 – biziclop