English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Java 基础教程

Java フローコントロール

Java 配列

Java オブジェクト指向(I)

Java オブジェクト指向(II)

Java オブジェクト指向(III)

Java 例外処理

Javaリスト(List)

Java Queue(キュー)

Java Mapコレクション

Java Setコレクション

Java入出力(I/O)

Java Reader/Writer

Javaの他のトピック

Java ワップラークラス(ラッパー)

このチュートリアルでは、Javaの包装クラス(Wrapper)についてサンプルを用いて学習します。

Javaでは、原始型(int、char、floatなど)を対応するオブジェクトに変換するために包装クラスを使用します。

8各基本型には対応する包装クラスがあります。

原始型包装クラス
byteByte
booleanBoolean
charCharacter
doubleDouble
floatFloat
intInteger
longLong
shortShort

基本型を包装オブジェクトに変換します

valueOf()メソッドを使用して、原始型を対応するオブジェクトに変換することができます。

例1:包装オブジェクトの原始型

class Main {
  public static void main(String[] args) {
    //原始型の作成
    int a = 5;
    double b = 5.65;
    //包装オブジェクトへの変換
    Integer aObj = Integer.valueOf(a);
    Double bObj = Double.valueOf(b);
    if(aObj instanceof Integer) {
      System.out.println("Integerオブジェクトを作成します。");
    }
    if(bObj instanceof Double) {
      System.out.println("Doubleオブジェクトを作成します。");
    }
  }
}

出力結果

Integerオブジェクトを作成します。
Doubleオブジェクトを作成します。

上記の例では、valueOf()メソッドを使用して原始型をオブジェクトに変換する方法を使用しました。

ここでは、生成されたオブジェクトがIntegerまたはDouble型であるかどうかをinstanceof演算子で確認しました。

しかし、Javaコンパイラは直接原始型を対応するオブジェクトに変換できます。例えば、

int a = 5;
//オブジェクトへの変換
Integer aObj = a;
double b = 5.6;
//オブジェクトへの変換
Double bObj = b;

このプロセスは自動装箱Java オートボックスとアンボックス

注意:包装クラス(Wrapper)のコンストラクタを使用して原始型を包装オブジェクトに変換することもできます。しかしJavaでは 9その後、コンストラクタは使用されなくなります。

包装オブジェクトを原始型に変換

オブジェクトを原始型に変換するには、各包装クラスに対応する値メソッド(intValue()、doubleValue()など)を使用できます。

例2:包装オブジェクトを原始型に変換する

class Main {
  public static void main(String[] args) {
    //包装クラスのオブジェクトの作成
    Integer aObj = Integer.valueOf(23);
    Double bObj = Double.valueOf(5.55);
    //原始型への変換
    int a = aObj.intValue();
    double b = bObj.doubleValue();
    System.out.println("aの値: "); + a);
    System.out.println("bの値: "); + b);
  }
}

出力結果

aの値: 23
bの値: 5.55

上記の例では、intValue()とdoubleValue()メソッドを使用してIntegerとDoubleオブジェクトを対応する原始基本型に変換しました。

しかし、Javaコンパイラはオブジェクトを対応する原始型に自動的に変換できます。例えば、

Integer aObj = Integer.valueOf(2);
//int型に変換
int a = aObj;
Double bObj = Double.valueOf(5.55);
//double型に変換
double b = bObj;

このプロセスはアンボックスJava オートボックスとアンボックス

包装クラスの利点

  • Javaでは、集合を使用する際に、時にはオブジェクトを使用する必要があることがあります。例えば、

    // エラー
    ArrayList<int> list = new ArrayList<>();
    //正常動作
    ArrayList<Integer> list = new ArrayList<>();

    この場合、包装クラスを使用して、原始データ型をオブジェクトとして使用することができます。

  • 空値を包装オブジェクトに格納することができます。例えば、

    //エラーが生成されます
    int a = null;
    // 正常動作
    Integer a = null;

注意:基本型は対応するオブジェクトよりも効率的です。したがって、効率が必要な場合、常に原始型を使用することをお勧めします。