English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、Javaの包装クラス(Wrapper)についてサンプルを用いて学習します。
Javaでは、原始型(int、char、floatなど)を対応するオブジェクトに変換するために包装クラスを使用します。
8各基本型には対応する包装クラスがあります。
原始型 | 包装クラス |
---|---|
byte | Byte |
boolean | Boolean |
char | Character |
double | Double |
float | Float |
int | Integer |
long | Long |
short | Short |
valueOf()メソッドを使用して、原始型を対応するオブジェクトに変換することができます。
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()など)を使用できます。
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;
注意:基本型は対応するオブジェクトよりも効率的です。したがって、効率が必要な場合、常に原始型を使用することをお勧めします。