3

Java では、ラッパー クラスを使用して変数を宣言できます。例えば

    Integer x=5;

これは、値 5 を指す参照「x」があることを意味します。

次に、同じ値を指す y という別の参照を宣言しました

    Integer y=x;  //now y should point to the number "5"

次に、yが指す値を変更しました

     y=20;

これにより、 x と y の両方が 20 を指しませんか? x を印刷すると、まだ 5 が得られるため

4

4 に答える 4

1

最初の行Integer x=5; xは、値が 5 の Integer オブジェクトへの参照です。次にInteger y=x;、同じオブジェクトに対して別の参照を作成し、同じオブジェクトxy参照します。最後に、値が 20の別のオブジェクトを指すy=20;参照を作成します。yInteger

Ken Arnold、James Gosling、および David Holmes による「The Java Programming Language, 4th edition」より:

Java プログラミング言語は、参照によってオブジェクトを渡しません。オブジェクト参照を値で渡します。同じ参照の 2 つのコピーが同じ実際のオブジェクトを参照するため、一方の参照変数を介して行われた変更は、もう一方を介して表示されます。

しかし、あなたの場合、実際には最初のオブジェクトを変更するのではなく、その参照の 1 つを別のオブジェクトを指すように変更します。

于 2013-09-23T13:23:35.000 に答える