Javaのラッパークラスが参照型のように動作しない理由を理解するのに大きな問題があります。 例:Javaのラッパークラスが参照型のように動作しないのはなぜですか?
Integer one = 10;
Integer two = one;
one = 20;
System.out.println(one);
System.out.println(two);
出力は次のようになります。
:を私はtwo
は、私は自分のクラスを作成するには、この例のように20になると思いました
class OwnInteger {
private int integer;
public OwnInteger(int integer) {
this.integer = integer;
}
public int getInteger() {
return integer;
}
public void setInteger(int integer) {
this.integer = integer;
}
}
OwnInteger one = new OwnInteger(10);
OwnInteger two = one;
one.setInteger(20);
System.out.println(one.getInteger());
System.out.println(two.getInteger());
質問はInteger wraです授業は特別ですか?私の例で示したように、なぜそれは動作しますか?
'one = 20;'と 'one.setInteger(20);'には大きな違いがあり、ラッパークラスとは何の関係もありません。最初のスニペットの 'one = 20;'は2番目のスニペットで 'one = new OwnInteger(20);'と等しくなります。 – Eran
これらのクラスは参照型とまったく同じように動作します。 1つの参照を別のオブジェクトにポイントすると、他のポインタは変更されません。ポインタは独立しています。同じ_オブジェクト_へのポインタを介して表示される_オブジェクト_への変更のみです。 JLSの言うとおり、Javaの「参照はポインタです」ということを覚えておいてください。 –