Java のプリミティブデータ型のラッパークラス:Wrapper Class for Java Primitive Data Types

Java のプリミティブデータ型のラッパークラス:Wrapper Class for Java Primitive Data Types

Java には、プリミティブデータ型をオブジェクトとして扱うための「ラッパークラス」が用意されています。ラッパークラスは、データ型をクラス化して扱いやすくするためのもので、多くのユーティリティメソッドを提供します。このページでは、ラッパークラスについて詳しく解説し、例を交えながらその使い方を説明します。

ラッパークラスとは

Java のプリミティブデータ型は効率的ですが、オブジェクト指向のプログラミングではオブジェクトとして扱いたい場合があります。この目的で、各プリミティブ型に対応するラッパークラスが用意されています。ラッパークラスを使用すると、プリミティブ値をオブジェクトとして操作できます。

たとえば、int型のラッパークラスはIntegerです。このクラスを使うことで、int型をオブジェクトとして操作できるようになります。

ラッパークラスの一覧

以下は、Java におけるプリミティブ型とその対応するラッパークラスの一覧です。

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

オートボクシングとアンボクシング

Java では、プリミティブ型とその対応するラッパークラス間で自動的に型変換が行われます。

オートボクシング

オートボクシングとは、プリミティブ型が自動的にラッパークラス型に変換されることを指します。

int primitiveValue = 10;
Integer wrapperObject = primitiveValue; // オートボクシング

アンボクシング

アンボクシングとは、ラッパークラス型が自動的にプリミティブ型に変換されることを指します。

Integer wrapperObject = 20;
int primitiveValue = wrapperObject; // アンボクシング

ラッパークラスの使用例

コレクションでの使用

Java のコレクションフレームワークでは、オブジェクトのみを扱うため、プリミティブ型を直接格納できません。ラッパークラスを使用して格納します。

import java.util.ArrayList;
import java.util.List;

public class WrapperExample {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1); // オートボクシング
        list.add(2);
        list.add(3);

        for (int number : list) { // アンボクシング
            System.out.println(number);
        }
    }
}

ユーティリティメソッドの利用

ラッパークラスには、多くの便利な静的メソッドがあります。例として、Integerクラスを使用した数値のパースを示します。

String numberStr = "123";
int number = Integer.parseInt(numberStr);
System.out.println("Parsed number: " + number);

値の比較

Integerクラスのcompareメソッドを使用して値を比較できます。

int result = Integer.compare(10, 20);
System.out.println("Comparison result: " + result);

注意点

ラッパークラスを使用する際の注意点を以下に示します。

パフォーマンスの影響

ラッパークラスを使用すると、プリミティブ型に比べてパフォーマンスが低下する場合があります。特に、大量のデータを扱う場合は注意が必要です。

null 値の扱い

ラッパークラスはオブジェクトであるため、nullを格納できます。null値をアンボクシングしようとするとNullPointerExceptionが発生するため、注意が必要です。

Integer wrapperObject = null;
int primitiveValue = wrapperObject; // NullPointerException

等価性の比較

ラッパークラスの等価性を比較する際は、==ではなくequalsメソッドを使用するのが一般的です。

Integer a = 128;
Integer b = 128;

System.out.println(a == b); // false
System.out.println(a.equals(b)); // true

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です