Javaプログラミングのコレクションには、基本データ型の情報を直接格納できないデス。
基本データ型の情報をコレクションに格納するには、ラッパークラスを使用します。
ラッパークラス
基本データ型はbyte
、short
、int
、 long
、float
、double
、boolean
、char
のデータ型であり、コレクション(例: ArrayList
)にはこれらのデータ型を直接格納できません。
その代わり、ラッパークラスを使用して基本データ型をオブジェクトとして扱います。
以下は一般的なラッパークラスの例です。
Integer
: 整数を表すラッパークラスFloat
: 浮動小数点数を表すラッパークラスBoolean
: 真偽値を表すラッパークラス
基本データ型とラッパークラス
Javaプログラミングでは、整数、浮動小数点数、文字列などのデータを基本データ型で表現します。
基本データ型は、変数に直接代入できる値が入る型です。
int i = 10;
float f = 3.14;
一方、ラッパークラスは、基本データ型に対応したクラスです。
ラッパークラスは、基本データ型の情報をオブジェクトとして表現します。
Integer i = new Integer(10);
Float f = new Float(3.14);
コレクションに基本データ型を格納する
コレクションに基本データ型を直接格納しようとすると、コンパイルエラーになります。
// コンパイルエラー
ArrayList<int> list = new ArrayList<>();
list.add(10);
基本データ型をコレクションに格納するには、ラッパークラスを使用します。
// 正しいコード
ArrayList<Integer> list = new ArrayList<>();
list.add(new Integer(10));
ラッパークラスでArrayListに格納する
コレクションに基本データ型の情報を格納できないという制約を解決する方法として、ラッパークラスとオートボクシングが使われます。
オートボクシング
オートボクシングは、基本データ型とラッパークラスの間で自動的な変換を行う機能です。
コードで基本データ型を使用し、それをラッパークラスのインスタンスとして格納する場合、オートボクシングが行われます。
ArrayList<Integer> list = new ArrayList<>();
list.add(new Integer(10)); // オートボクシング
同様に、ラッパークラスから基本データ型への変換も自動的に行われます。
Integer j = new Integer(10);
int i = j; // アンボクシング
コードの例
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
// ArrayListを生成
ArrayList<Integer> list = new ArrayList<>();
// オートボクシングを利用して整数をArrayListに追加
list.add(10);
list.add(20);
list.add(30);
// オートボクシングを利用してArrayListの要素を取得
int value = list.get(1);
System.out.println(value);
}
}
↓実行結果
20
この図では、オートボクシングにより、基本データ型の整数がラッパークラスInteger
に変換され、ArrayList
に格納されています。
また、オートアンボクシングにより、ArrayList
から整数を取得する際に、Integer
が自動的に基本データ型の整数に変換されています。