マンガで分かる Java入門講座

第6章 文字列と配列
6-2. 複数の参照

1つの値に対して、複数の参照がある状態について、注意点と共に紹介します。

● 複数の参照

 参照型の変数には、本体であるオブジェクトの参照を変数に格納します。この参照はいくつあっても構いません。そのため、複数の変数に、同じオブジェクトに対する参照が格納されるといった事態が発生します。

図)複数の参照
┏━━━┓    ┏━━┓     ┏━━━━━━━━━┓
┃変数A┃←格納─┃参照┃……:……┃オブジェクト(本体)┃
┗━━━┛    ┗━━┛  :  ┗━━━━━━━━━┛
┏━━━┓    ┏━━┓  :
┃変数B┃←格納─┃参照┃……:
┗━━━┛    ┗━━┛  :
┏━━━┓    ┏━━┓  :
┃変数C┃←格納─┃参照┃……:
┗━━━┛    ┗━━┛

● 参照先の書き換え

 複数の参照がある場合、たとえば変数Aで、参照を利用して、本体であるオブジェクトの値を書き換えた場合は、変数Bや変数Cから参照しているオブジェクトも同じものなので、値が書き換わっています。

図)参照を利用した値の書き換え
┏━━━┓    ┏━━┓       ┏━━━━━━━━━┓
┃変数A┃─利用→┃参照┃…書き換え…→┃オブジェクト(本体)┃
┗━━━┛    ┗━━┛       ┗━━━━━━━━━┛

 ↓

┏━━━┓    ┏━━┓       ┏━━━━━━━━━┓
┃変数A┃────┃参照┃………:……→┃オブジェクト(本体)┃
┗━━━┛    ┗━━┛   :   ┗━━━━━━━━━┛
┏━━━┓    ┏━━┓   :     ※ 書き換わっている
┃変数B┃────┃参照┃………:
┗━━━┛    ┗━━┛   :
┏━━━┓    ┏━━┓   :
┃変数C┃────┃参照┃………:
┗━━━┛    ┗━━┛

 こういった挙動は、参照型の変数の利用に慣れていないと混乱する部分です。こういったことが起きるということを、頭の片隅に置いておいてください。


この講座のマンガ部分は「箱人形マンガ(Box Comic) 」で作成しています。
作成:2013/05/24  更新:2013/05/24  [Permalink]