【6日でできるJava入門】基本データ型ラッパークラス

 Javaでは、intdoubleなどの**基本データ型(プリミティブ型)がありますが、これらを「オブジェクト(クラス型)」として扱いたい場合に利用できるのが「ラッパークラス(Wrapper Class)」です。ラッパークラスを使うと、基本型⇔オブジェクト型の相互変換や、数値⇔文字列変換などが簡単にできます。コレクション(List, Setなど)で数値を扱いたいときにも必須です。

1.ラッパークラスの基礎

1.1. 基本データ型とラッパークラスの対応

基本データ型ラッパークラス名
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
booleanBoolean
charCharacter

たとえば、intのラッパークラスはIntegerdoubleDoubleです。

1.2. 基本データ型とラッパークラスの相互変換

オブジェクト化(ボクシング)

ファイル名: lesson16_1.java

基本型の値をラッパークラスで包む(=ボクシング)の基本例です。

public class lesson16_1 {
    public static void main(String[] args) {
        int num = 100;
        Integer obj = Integer.valueOf(num);  // ボクシング
        System.out.println("オブジェクト: " + obj);
    }
}

実行結果

オブジェクト: 100

基本型への戻し(アンボクシング)

ファイル名: lesson16_2.java

public class lesson16_2 {
    public static void main(String[] args) {
        Integer obj = Integer.valueOf(200);
        int num = obj.intValue();  // アンボクシング
        System.out.println("基本型: " + num);
    }
}

実行結果

基本型: 200

2.文字列との相互変換

2.1. 文字列 → 数値(parseXXX)

入力値など文字列を数値型に変換したい場合は、各ラッパークラスのparseXXX()メソッドを使います。

メソッド名機能
Byte.parseByte(String s)文字列をbyte型に変換
Short.parseShort(String s)文字列をshort型に変換
Integer.parseInt(String s)文字列をint型に変換
Long.parseLong(String s)文字列をlong型に変換
Float.parseFloat(String s)文字列をfloat型に変換
Double.parseDouble(String s)文字列をdouble型に変換
Boolean.parseBoolean(String s)文字列をboolean型に変換

サンプルプログラム

ファイル名: lesson16_3.java

public class lesson16_3 {
    public static void main(String[] args) {
        String s1 = "123";
        int num = Integer.parseInt(s1); // "123"→123
        String s2 = "3.14";
        double pi = Double.parseDouble(s2); // "3.14"→3.14

        System.out.println("num = " + num);
        System.out.println("pi = " + pi);
    }
}

実行結果

num = 123
pi = 3.14

2.2. 数値 → 文字列(toString)

数値を文字列に変換したい場合は、toString()メソッドやString.valueOf()を使います。

ファイル名: lesson16_4.java

public class lesson16_4 {
    public static void main(String[] args) {
        int num = 500;
        String s1 = Integer.toString(num); // int→String
        double d = 2.718;
        String s2 = Double.toString(d); // double→String

        System.out.println("s1 = " + s1);
        System.out.println("s2 = " + s2);
    }
}

実行結果

s1 = 500
s2 = 2.718

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

 Java5以降では、基本型とラッパークラス間の変換が自動で行われる「オートボクシング/アンボクシング」がサポートされています。

ファイル名: lesson16_5.java

public class lesson16_5 {
    public static void main(String[] args) {
        Integer obj = 42;     // オートボクシング
        int num = obj + 10;   // オートアンボクシング
        System.out.println("num = " + num); // 52
    }
}

実行結果

num = 52

4.ラッパークラスの利用例

4.1. 配列やリストで使う場合

コレクション(例:ArrayList)では基本型をそのまま格納できないため、ラッパークラスを使います。

ファイル名: lesson16_6.java

import java.util.ArrayList;

public class lesson16_6 {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10); // オートボクシングでint→Integer
        list.add(20);
        int value = list.get(0); // オートアンボクシングでInteger→int
        System.out.println("リストの1番目: " + value); // 10
    }
}

実行結果

リストの1番目: 10

5.エラー例と注意点

5.1. 変換できない文字列を変換しようとした場合

ファイル名: lesson16_7.java

public class lesson16_7 {
    public static void main(String[] args) {
        try {
            int value = Integer.parseInt("abc"); // 変換できない
            System.out.println(value);
        } catch (NumberFormatException e) {
            System.out.println("変換エラー: " + e.getMessage());
        }
    }
}

実行結果

変換エラー: For input string: "abc"

まとめ

  • ラッパークラスは基本データ型をオブジェクト化し、コレクション利用や型変換・文字列変換などに便利です。
  • parseInttoStringなど、静的メソッドで型変換ができる
  • オートボクシング/アンボクシングにより、自動で変換される場面も多い。