Java
初心者

参照型と値型の違いを初心者がまとめてみた

この記事でわかること

  • 1 値型ってなんのこと?
  • 2 参照型ってなんのこと?
  • 3 値型と参照型の一番の違いは何?

1.値型とは?

一言で言うと、値を直接持っている変数のこと。
プログラミングには,intやlongのように基本となる型が用意されています。

int a = 1;
long b = 2;
//このように宣言された変数が値型です!

2.参照型とは?

一言で言うと、どこを参照すればいいかの情報を持っている変数のこと。
配列やオブジェクトなどを持つ変数が参照型になります。

int[] a = {1,2};
Dog dog = new Dog();
//このように宣言された変数が参照型です!

3.値型と参照型の一番の違いは何?

この2つの1番の違いは、参照型が直接値を持っているわけではないことだと思います。

そもそもなんで参照型が必要なんでしょうか?

int a;//①
a = 1;

値型の場合は、①の時点で、変数aの中に入る値が決まらずとも,32bitのメモリが用意されます。
なんで32bitかどうかは決まりだと思っていてください。
なんで配列やオブジェクトのときは値型じゃだめなのでしょうか?

int[] a;//①
a = new int[]{1,2,3}; //②

値型と同じように①の時点で何個の値が入るかはわかりません。
②で3つ入る場合もあるし、100個はいる場合もあります。
変数はどこからどこのメモリを読み込むかは宣言後には変更できないので、困ってしまいます。

なので、変数には参照場所が書いてあるメモリを読み込むようにして、参照先に配列の値があるようにします。
そうすることで、参照先の配列が増えても参照場所が書いてあるメモリの中身が書き換わるだけで、変数が読み込むべきメモリは変わらずに済みます。
なので参照型が必要なのです。

(注)メモリっていうのは変数をしまっておく場所だと思ってください。

まとめ

参照型と値型の大きな違いとしては、値型は変数に値を直接持っていて、参照型は変数に参照先の場所を持っているということでした。