プリミティブ型

Javaのプリミティブ型は8種類。各型の値域(要約)やデフォルト値、ラッパー型の話など。

執筆時バージョン
Java

Java SE 8

Javaのプリミティブ型は次の8種類。

値域 値域(要約) デフォルト値

boolean

true,false

false

char

\u0000~\uFFFF

\u0000

byte

-128~127

±約120

0

short

-32,768 ~ 32,767

±約3万2000

0

int

-2,147,483,648 ~ 2,147,483,647

±約21億4000万

0

long

-9,223,372,036,854,775,808
~ 9,223,372,036,854,775,807

±約922京3372兆

0

float

±1.4E-45 ~ ±3.4028235E+38

IEEE単精度32ビット浮動小数点

0.0

double

±4.9E-324
~ ±1.7976931348623157E+308

IEEE倍精度64ビット浮動小数点

0.0

ラッパー型

プリミティブ型は単純な値のようなものなので計算はできるが、参照型では当たり前にできることができない。

  • nullを代入できない

  • メソッドを定義できない

  • 参照型しか受け入れてくれない(オーバーロードしてくれていない)ライブラリなどで困る

例えばintでListを作りたいと思った場合List<int>が作れない。なので対応するラッパー型のjava.lang.Integerを用いることでList<Integer>として対応できる。

このようにプリミティブ型にはその値をオブジェクトとして扱えるいわゆるラッパー型というものがある。ラッパー型は全プリミティブ型に対応する形で存在する。

プリミティブ型 対応するラッパー型

boolean

java.lang.Boolean

char

java.lang.Character

byte

java.lang.Byte

short

java.lang.Short

int

java.lang.Integer

long

java.lang.Long

float

java.lang.Float

double

java.lang.Double

ラッパー型はオートボクシングなどで自動で変換されることがあるので普通のクラスよりは少し特殊なクラス。といっても標準APIのjava.langパッケージに含まれるクラスなので普通に利用できる。

Appendix A: 改訂履歴

  • v1.0, 2013-09-18: 初稿