参照ではなく、vo4 オブジェクトに vo1 オブジェクトのコピーを保持しています。
いいえ、次のように、変数vo1
を同じオブジェクトに向けvo4
ました。
+-----+
| | vo1 |--------\
+-----+ \ +----------------+
--->| (オブジェクト) |
+-----+ / | 名前 = アビシェク |
| | vo4 |--------/ +----------------+
+-----+
コードをたどってみましょう:
VO vo1 = new VO();
私たちに与えます:
+-----+ +----------------+
| | vo1 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
それで:
VO vo2 = new VO();
これで、次のようになりました。
+-----+ +----------------+
| | vo1 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
+-----+ +----------------+
| | vo2 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
それで:
VO vo3;
... (オブジェクトを指していない)で作成vo3
するだけです。null
それで:
VO vo4 = new VO();
したがって、次のようになります。
+-----+ +----------------+
| | vo1 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
+-----+ +----------------+
| | vo2 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
+-----+
| | vo3 | (無効です)
+-----+
+-----+ +----------------+
| | vo4 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
今:
vo1.setName("Sourav");
vo2.setName("Anil");
私たちに与えます:
+-----+ +----------------+
| | vo1 |------------->| (オブジェクト) |
+-----+ | 名前 = スーラフ | ***変更はこちら***
+----------------+
+-----+ +----------------+
| | vo2 |------------->| (オブジェクト) |
+-----+ | 名前 = アニル | *** そしてここ ***
+----------------+
+-----+
| | vo3 | (無効です)
+-----+
+-----+ +----------------+
| | vo4 |------------->| (オブジェクト) |
+-----+ | 名前 = null |
+----------------+
興味深いのは次のとおりです。
vo3 = vo1;
vo4 = vo1;
それvo3
は同じオブジェクトvo1
を指しvo4
、そのオブジェクトも指し示し、指していたオブジェクトを解放しますvo4
(ガベージコレクションの対象になります)。私たちに与えること:
+-----+
| | vo1 |----\
+-----+ \
\
+-----+ \ +----------------+
| | vo3 |------------->| (オブジェクト) |
+-----+ / | 名前 = スーラフ |
/ +----------------+
+-----+ /
| | vo4 |----/
+-----+
+-----+ +----------------+
| | vo2 |------------->| (オブジェクト) |
+-----+ | 名前 = アニル |
+----------------+
今
System.out.println(" " + vo4.getName());
...ご想像のとおり、「Sourav」が表示されます。
それで
vo1.setName("Abhishek.");
... vo1
、vo3
、およびvo4
がすべて指しているオブジェクトを変更します。
+-----+
| | vo1 |----\
+-----+ \
\
+-----+ \ +----------------+
| | vo3 |------------->| (オブジェクト) |
+-----+ / | 名前 = アビシェク |
/ +----------------+
+-----+ /
| | vo4 |----/
+-----+
+-----+ +----------------+
| | vo2 |------------->| (オブジェクト) |
+-----+ | 名前 = アニル |
+----------------+
...など、、、または「アビシェク」が表示さgetName()
れます。vo1
vo3
vo4