Javaの変数のデータ型とラッパークラスとボクシング変換についてです。
目次
変数
変数とは、データを保持できる箱です。
変数には、決められたデータの種類(データ型)のデータのみ代入できます。
データ型

データ型とはデータの種類です。
Javaのデータ型は、基本型と参照型があります。
基本型
Javaのデータ型の基本型です。プリミティブ型、原始型とも呼ばれます。
| 分類 | データ型 | 範囲 | 備考 |
|---|---|---|---|
| 整数 | byte | -128~127 | 1バイト 主に人でなくシステム側が扱う型 |
| short | -32,768~32,767 | 2バイト ほとんど使用されない |
|
| int | -2147483648~2147483647(約-21億~21億) | 4バイト 数値を扱うときに使用する(使用推奨) 10は、int型の10を表す |
|
| long | -9223372036854775808~9223372036854775807 (約-922京~約922京) |
8バイト intより大きい数値を扱うときに使用する 10lは、long型の10を表す |
|
| 浮動小数点 | float | 32ビット単精度浮動小数点数 | 4バイト doubleより容量を使いたくないときに使用する 誤差あり 10fは、float型の10を表す |
| double | 64ビット倍精度浮動小数点数 | 8バイト 小数を扱うときに使用する(使用推奨) 誤差あり 10dは、double型の10を表す |
|
| 真偽 | boolean | true / false | 1バイト |
| 文字 | char | ¥u0000~¥uffff Unicode(UTF-16)の文字に対応する数値コード 0~65535の範囲 |
2バイト 文字を表すコード |
基本型の変数には、値が格納されます。

参照型
Javaのデータ型の参照型は、クラス、インターフェース、配列等があります。
参照型の変数には、参照先のアドレスが格納されます。
値は指定されたアドレスにあります。
参照先がない状態がnullです。
参照型はリファレンス型とも呼ばれます。

ラッパークラス
基本型に対応してそれぞれのラッパークラスがあります。
ラッパークラスは基本型にオブジェクトの機能が付いた(ラップした)クラスです。
基本型とラッパークラスどちらでも使える場面では基本型を優先します。
ラッパークラスはオブジェクトの生成が行われ(性能面)またnull値の考慮も必要のためです。
| 基本型 | ラッパークラス |
|---|---|
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| float | Float |
| double | Double |
| boolean | Boolean |
| char | Character |
基本型からラッパーオブジェクトへの変換
基本型からラッパーオブジェクトへの変換は以下の方法があります。
・ボクシング変換を使う。ボクシング変換とは、基本型からラッパーオブジェクトへの変換が自動的に行われることです。
・メソッドを使う。
・コンストラクタを使う。
コード
基本型からラッパーオブジェクトへの変換するサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
// ボクシング変換
Integer t1 = 1;
// メソッドを使う
Integer t2 = Integer.valueOf(1);
// コンストラクタを使う
Integer t3 = new Integer(1);
}
}
7行目は、ボクシング変換で基本型からラッパーオブジェクトへ変換しています。
10行目は、IntegerクラスのvalueOfメソッドで基本型からラッパーオブジェクトへ変換しています。
13行目は、Integerクラスのコンストラクタで基本型からラッパーオブジェクトへ変換しています。
13行目のコンストラクタを使う方法は、Java9以降ではDeprecated(非推奨)です。
ラッパーオブジェクトから基本型への変換
ラッパーオブジェクトから基本型へ変換は以下の方法があります。
・アンボクシング変換を使う。アンボクシング変換とは、ラッパーオブジェクトから基本型への変換が自動的に行われることです。
・メソッドを使う。
コード
ラッパーオブジェクトから基本型への変換するサンプルです。
package test1;
public class Test1 {
public static void main(String[] args) {
// アンボクシング変換
Integer t1 = 1;
int t2 = t1;
// メソッドを使う
Integer t3 = 1;
int t4 = t3.intValue();
}
}
7,11行目は、説明のためラッパーオブジェクトに値をセットしています。
8行目は、アンボクシング変換でラッパーオブジェクトから基本型へ変換しています。
12行目は、IntegerクラスのintValueメソッドでラッパーオブジェクトから基本型へ変換しています。
関連の記事
Java 数値と文字列の変換のサンプル(valueOf)
Java クラスの変数の用語のサンプルとまとめ(メンバー変数他)
Java 参照型の変数を型変換するサンプル