Javaではプリミティブ型変数以外の変数は全て参照型変数である。

参照型とプリミティブ型の違い

プリミティブ型変数には直接値が入っているが、参照型変数には直接実体が入るわけではない。
参照型変数には、別の場所に入っている実体のデータを参照するための参照先が入っている。
これが参照型とプリミティブ型の違いである。

プリミティブ型では宣言したときに、変数ごとにその変数の型に合わせた大きさで値を入れるためのメモリ領域を確保していた。
しかし参照型の変数の場合、宣言しただけでは参照先を入れるため大きさのメモリ領域しか確保されない。
参照型変数を宣言しただけでは実体を入れる場所が確保されていないため、その変数にアクセスしようとすると、コンパイルエラーとなる。
変数の実体を入れるための領域を別に確保(インスタンスの生成)し、その場所への参照先を変数に代入することで初めて使用することができる。
【変数とその値、メモリの関係についての詳細は「第4回変数について」の映像を参照】

このような参照型には以下の4つがある。
・文字列型
・クラス型
・配列型
・インターフェース型

配列型については配列のところで詳しく説明する。インターフェース型については今回は取り上げない。