【Java】ラッパークラスとは - 使い方やボクシング機能について解説
- 作成日:2022/02/09
Javaのラッパークラスについて解説します。
ラッパークラスとは
ラッパークラスとは基本データ型にメソッドを付与した参照型のクラスです。
int型やboolean型などの基本データ型はデータのみもち、データを別の型に変換したり、サイズを取得したりといったデータの操作はできません。
しかし、int型の変数にも型の変換やサイズ取得が必要な場面もあるでしょう。そこで登場するのがラッパークラスです。 基本データ型に対応したラッパークラスが用意されていて、これを使えばメソッドを用いてデータ操作が可能となります。
基本データ型 | ラッパークラス |
---|---|
boolean | Boolean |
byte | Byte |
char | Character |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
参照型なので先頭文字が大文字になっていますね。
使い方
ラッパークラスの使い方を解説します。
値の設定
まずは値の設定方法です。Integer型を例にすると、以下のような方法があります。7行目と9行目に注目してください。
public class App {
public static void main(String[] args) {
Integer tmp= new Integer(5);//非推奨
Integer tmp2= Integer.valueOf(5);
}
}
どちらもInteger型の変数に「5」という値を設定しています。 7行目はよく使うnew演算子を用いたインスタンスの生成方法ですが、こちらは現在非推奨なので使わないほうが良いでしょう。
9行目はvalueOfメソッドを用いた設定で、引数に渡した数値をtmp2変数に代入しています。 数値をInteger型に変換しているともいえます。
厳密にいうと、tmp2は参照型の変数なので、tmp2に格納されるのはアドレスです。
その他のラッパークラスにもvalueOfメソッドがあります。
public class App {
public static void main(String[] args) {
//Integer型
Integer tmp1= Integer.valueOf(5);
//Boolean型
Boolean tmp2= Boolean.valueOf("true");
//Byte型
Byte b=1;
Byte tmp3= Byte.valueOf(b);
//Character型
Character tmp4= Character.valueOf('a');
//Short型
short s=123;
Short tmp5 = Short.valueOf(s);
//Long型
Long tmp6 = Long.valueOf(100);
//Float型
float f=1.23f;
Float tmp7 = Float.valueOf(f);
//Double型
Double tmp8 = Double.valueOf(4.23);
}
}
これはvalueOfメソッドの使い方の1例です。他にも、引数を文字列にしたりできます。
値の取得
ラッパークラスの値の取得方法を解説します。Integer型を例にすると、以下のような方法があります。7行目と10行目に注目してください。
public class App {
public static void main(String[] args) {
//値の設定
Integer tmp1= Integer.valueOf(5);
//値の取得
int i=tmp1.intValue();
}
}
まず7行目でtmp1に「5」という値を設定しています。 10行目でtmp1に設定した値を取得しています。値の取得してint型に代入する場合はintValueメソッドを使います。 Integer型の値をint型に変換しているともいえます。
long型変数に代入したい場合は、longValueメソッドを、double型変数に代入したい場合はdoubleValueメソッドを使うなど、 型に応じて使い分けましょう。
ボクシング機能
ボクシング機能とは、基本データ型とラッパークラスの変換を自動で行ってくれる機能です。 これにより、メソッドを使わずに簡単な記述で値を設定・取得できます。
基本データ型からラッパークラスへの変換をオートボクシングといいます。
public class App {
public static void main(String[] args) {
//オートボクシングなし
Integer tmp1= Integer.valueOf(5);
//オートボクシング
Integer tmp2=5;
}
}
逆に、ラッパークラスから基本データ型への変換をアンボクシングといいます。
public class App {
public static void main(String[] args) {
//値の設定
Integer tmp=5;
//アンボクシングなし
int i=tmp.intValue();
//アンボクシングあり
int j=tmp;
}
}
このように、基本データ型に対応したラッパークラスへの変換はメソッドを使わずに済みます。