• 目的別厳選記事





連載2日目です。1日目がまだの人は1日目から読むことをオススメします。

全体はこんな感じ。




参照周りで押さえておきたい内容について4回に渡って解説していきます。

今日は参照渡しについて。

本ブログの熱烈なねつれーつな読者の方(そんな人いるのか)は、以前参照渡しについての記事を書いたのを知っているかもしれません。

それがこちら



これは関数に参照型を渡すときの話ですが、今回はもっと手前の代入あたりにフォーカスをしぼっていきます。

この記事を読んだ後に↑の記事も読んで頂くとより理解が深まるかと思います。

それでは2日目いきましょう~(/・ω・)/

変数の代入

変数の代入とは「ある変数が持っている値を別の変数に渡すこと」です。

「渡す」と言っていますが、自分自身の値が消えるわけではないので、コピーするイメージです。

コードで見てみましょう。



考える人考える人

まぁ当たり前じゃな!

じゃけぇじゃけぇ

ここまでは簡単だね。じゃあ次は代入したあとの変数(num2、arr2)を変更したときの動きを見てみよう。

代入した後に変数を書き換えたときの挙動を確認する

値型の場合

先程のコードで、代入した後のnum2の値を書き換えたらどうなるでしょうか。


まぁこれは普通に理解できるかと思います。

これが参照型の場合はどうなるでしょうか。

参照型の場合

代入した後のarr2という配列の最初の要素を9に書き換えてみます。


arr1のほうは何もしてないのにarr1の最初の要素まで9に変わってしまいましたね。

なぜこんなことが起きるのでしょうか?図で確認していきましょう。

参照型の代入では何が起きているか

ここで1日目に使った図がいきてきます。

まずarr1を宣言しますが、1日目の講義で言ったように

arr1という変数に入っているのはあくまで参照値

でしたね。



なので

「arr2にarr1を代入する」

というのは

「arr2にarr1の参照値を代入する」

ということです。


図で見ると以下のような状態です。



2つの変数が同じ参照値を持っている状態です。

あとはもう分かりましたね?

arr2[0] = 9;のように値を変えた場合、ヒープ領域の同じ場所を見ているので、arr1の値も変わってしまうということです。




考える人考える人

1日目の話で言うと、ロッカーの鍵の合鍵を作る感じか!

じゃけぇじゃけぇ

そう!あくまでロッカーは1つのままだね。

2日目はここまで

参照型の代入の動きが分かったところで2日目はここまでとしておきましょう。

冒頭にも触れましたが↓の記事ではファンクションも絡めて話していますので、復習がてら読んでみてください^^
 Javaの参照渡しと値渡しについてこの世で1番分かり易く解説してみた




さぁでは4日間の集中講義も折り返しがきました。

明日は「==」「equals」の違いとその内部をこれまでの図と絡めてみていきます。


それでは!また明日!!

最後まで読んで頂きありがとうございます!
人気の記事だけ集めたので是非覗いていってください^^
 厳選!目的別にオススメ記事を紹介-あなたの欲しい情報がここに-