Javaの変数の代入:なぜBOX1はBOX3に更新されていませんか?

フィル:

私は、変数の代入のJavaの基礎について初心者の質問があります。

私のコード例では、私は3箱(オブジェクト)を持っています。次のように私はボックスを割り当てます。

    Box box1 = new Box("Furniture", 1);
    Box box2 = new Box("Games", 2);
    Box box3 = new Box("Cloths", 3);

    box1 = box2;
    box2 = box3;

    System.out.println(box1.toString());
    System.out.println(box2.toString());

今、私はBOX1もBOX3を指していることを期待します。しかし、それはまだBOX2を指していること、が判明し、本家の私はまた、BOX3へBOX2の参照を変更しました。どうしてこんなことに?

ゴータム:

これはあなたの初期状態です。

     +-----------------+             +----------------+
     |  box1 ( ref )   +------------>|  box1 ( obj )  |
     +-----------------+             +----------------+

     +-----------------+             +----------------+
     |  box2 ( ref )   +------------>|  box2 ( obj )  |
     +-----------------+             +----------------+

     +------------------+            +----------------+
     |  box3 ( ref )    +----------->|  box3 ( obj )  |
     +------------------+            +----------------+

これは後に何が起こるかですbox1 = box2

     +-----------------+             +----------------+
     |  box1 ( ref )   +----+        |  box1 ( obj )  |
     +-----------------+    |        +----------------+
                            |
     +-----------------+    +------> +----------------+
     |  box2 ( ref )   +------------>|  box2 ( obj )  |
     +-----------------+             +----------------+

     +------------------+            +----------------+
     |  box3 ( ref )    +----------->|  box3 ( obj )  |
     +------------------+            +----------------+

これは後に何が起こるかであります box2 = box3

     +-----------------+             +----------------+
     |  box1 ( ref )   +----+        |  box1 ( obj )  |
     +-----------------+    |        +----------------+
                            |
     +-----------------+    +------> +----------------+
     |  box2 ( ref )   +----+        |  box2 ( obj )  |
     +-----------------+    |        +----------------+
                            |
     +------------------+   +------->+----------------+
     |  box3 ( ref )    +----------->|  box3 ( obj )  |
     +------------------+            +----------------+

今、あなたは、出力がそのようである理由を把握することができるはずです。:)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=222952&siteId=1