Javaのプリミティブ型と参照型について

Javaのプリミティブ型と参照型の違いについて理解したのでメモしておく。

型の種類

Javaの変数には、大きく分けて以下の2つの型が存在する。

  • プリミティブ型
  • 参照型

以下より「プリミティブ型」と「参照型」について、それぞれ説明する。

プリミティブ型

データを格納するための、最も基本的な型である。 整数値や実数値といった、具体的な「値」を格納するための変数を作るための型が「プリミティブ型」である。

Javaにおけるプリミティブ型には以下の8つが存在する。

  • byte
  • short
  • int
  • long
  • char
  • float
  • double
  • boolean

上記の通り、プリミティブ型は頭が小文字である。

参照型

クラスのインスタンスを指し示す「番号」、もしくはその番号を格納するための変数を「参照」と言う。クラスは、newを用いてインスタンスを作成しなければ使用できないが、そのインスタンスは直接操作することができない。インスタンスは、作成時に「参照」と呼ばれる「番号」が振られて返される。インスタンスを操作する為にはこの番号を用いてインスタンスを「参照」し、操作しなければならない。その参照を受け取るのが「参照型」である。
Javaにおける参照型はユーザーが定義することもできる。以下は、プリミティブ型をラップしている「ラッパークラス」である。「ラッパークラス」とは、プリミティブ型をクラスの中に梱包したもので、参照型である。

プリミティブ型 ラッパークラス
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

上記の通り、参照型は頭が大文字である。

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

プリミティブ型と参照型は具体的にどう違うのかを表にまとめた。

プリミティブ型 参照型
変数へ値を代入した際に渡されるもの そのままの値が渡される。 「参照」と呼ばれるポインタのようなものが渡される。
プリミティブ型への代入 できる。 できない(キャストする必要がある)。
参照型への代入 できない(キャストする必要がある)。 できる。

オートボクシング

オートボクシングとは、値型(プリミティブ型)とオブジェクト型(参照型)を双方向に暗黙的に変換する機能である。値型(プリミティブ型)をオブジェクト型(参照型)に変換することを、ボックス化(boxing/ボクシング)と呼ぶ。逆に、ボックス化されたオブジェクトを値型(プリミティブ型)に戻すことをボックス化解除(unboxing/アンボクシング)と呼ぶ。

まとめ

  • 型には大きく分けて「プリミティブ型」と「参照型」が存在する
  • プリミティブ型は頭が小文字で、そのままの値を扱う
  • 参照型は頭が大文字で「参照」と呼ばれるポインタを扱う

参考
読本Java/4.6 プリミティブ型と参照型 – WisdomSoft
値渡しと参照渡し (と参照の値渡し) – ぐるぐる~
10-8. ラッパークラス – マンガで分かる Java入門講座 – マンガPG
図解 javaは参照渡しではなく参照の値渡しであるという事 – 蟻の実験工房(別館ラボ)
プリミティブ型とは : JavaA2Z
参照とは : JavaA2Z