Java言語の主な特徴の一つにオブジェクト指向があります。オブジェクト指向を深く、正確に理解するためには参照型を理解する必要があります。参照型の真髄とは何か?
参照型はデータそのものを扱うのではなく、データが格納されているメモリのアドレスを扱う
データはコンピュータの内部ではメモリに格納されていますが、Javaではプログラマがこのメモリに直接アクセスすることはできません。ではどのようにデータにアクセスするのかというと「変数」を使います。変数はよく「入れ物」や「箱」に例えられる通りデータを格納するための仕組みです。プログラマは変数を使ってデータの読み書きを行います。
Javaでは変数は「基本型」と「参照型」の二種類が用意されいます。基本型は変数に直接データが入っているため「変数=データ」として扱えばよく、とても分かりやすいです。ところが参照型は上述したように変数にはデータそのものではなく、データが格納されているメモリのアドレスが入っています。
ではなぜアドレスを扱うのでしょうか?そのメリットは何でしょうか?
参照型はたった1つの変数で複数のデータを扱うことができ、さらにメソッド(関数)も呼び出すことができる
変数は1つの箱ですので1つのデータしか入れることはできません。ところが参照型の場合はメモリのアドレスを変数に入れることができるのです。つまりある1つの土地(オブジェクト)にたくさんのデータを集めておいて、その土地の住所(メモリアドレス)を変数に入れておけば、その変数経由でいつでもたくさんのデータにアクセスできるということです。
参照型はデータそのものではなくアドレスを扱っているということが何となくでもいいのでお分かりいただけたでしょうか。オブジェクト指向言語では複数のデータや操作を一つのオブジェクトとしてまとめて扱えるため、参照型との相性がバッチリですね。
ただしメリットばかりではありません。アドレスを扱うことでさまざまな問題を引き起こしてしまうこともあります。問題点も含めて参照型については別の記事でも詳しく解説していますので、そちらも参考になさってください。
最後までお付き合いいただき、ありがとうございました。
※アイキャッチ画像はChatGPTで作成しています