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

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

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

● 複数の参照

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

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

● 参照先の書き換え

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

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

 ↓

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

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


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

クロクロ・ショップ
特殊な技術書多数あります
レトロ風RPG フルスクラッチ開発 全コード
レトロゲーム風RPGの全コードを掲載して解説した本
HTML5とJavaScriptで作る 落ち物パズルゲーム 全コード
『テトリス』や『ぷよぷよ』に類似した落ち物パズルゲームの全コードを掲載して解説した本
JavaScriptでリバーシゲームをつくろう
ライブラリを使わずに全コードを書いて、リバーシゲームを作るまでを徹底解説
ワールドマップ自動生成読本
二次元ゲームのワールドマップを自動生成するための本
レトロゲームファクトリー
過去のゲームを最新機に移植する会社のお仕事小説(新潮社)
顔貌売人 ハッカー探偵 鹿敷堂桂馬
プログラマーが探偵役のエンタメ・ミステリー第2弾 最先端の情報犯罪に安藤と鹿敷堂が挑みます(文藝春秋)
裏切りのプログラム ハッカー探偵 鹿敷堂桂馬
プログラマー鹿敷堂桂馬が、女性社長の安藤裕美と共に、IT業界で起きた事件に挑む。2016年の松本清張賞の最終候補作(文藝春秋)
×