こんにちは、コイキングです。
本記事では'ラッパークラス'について、説明したいと思います。
1. ラッパー(Wrapper)クラスとは?
ラッパークラスはプリミティブデータ型をクラス化したもので、
1) プリミティブ型の変数をインスタンスとして使う場合
2) 文字列 <-> 数字を相互変換する必要がある場合
などに使います。
2. プリミティブ型からラッパークラスのインスタンスに変換
- プリミティブ型 -> ラッパークラスの変換はnew 演算子を使います。
// ※ Wrapperクラスの参照変数には'null'の代入ができます。
Integer wrapperInt = null;
Long wrapperLong = null;
Short wrapperShort = null;
Byte wrapperByte = null;
Double wrapperDouble = null;
Float wrapperFloat = null;
Character wrapperChar = null;
Boolean wrapperBoolean = null;
// new 演算子を使いプリミティブ型のリテラル値からラッパークラスのインスタンスに変換
wrapperInt = new Integer(100);
wrapperLong = new Long(2000000L);
wrapperShort = new Short((short) 10);
wrapperByte = new Byte((byte) 1);
wrapperDouble = new Double(2.85);
wrapperFloat = new Float(0.25f);
wrapperChar = new Character('c');
wrapperBoolean = new Boolean(false);
System.out.println("int -> Int : " + wrapperInt);
System.out.println("long -> Long : " + wrapperLong);
System.out.println("short -> Short : " + wrapperShort);
System.out.println("byte -> Byte : " + wrapperByte);
System.out.println("double -> Double : " + wrapperDouble);
System.out.println("float -> Float : " + wrapperFloat);
System.out.println("char -> Character : " + wrapperChar);
System.out.println("boolean -> Boolean : " + wrapperBoolean);
- new 演算子を使わず、直接値を代入する方式でも変換できます。
こちらの機能を**オートボクシング(Auto Boxing)**と言います。
wrapperInt = 100;
wrapperLong = 2000000L;
wrapperShort = 10;
wrapperByte = 'a';
wrapperDouble = 2.85;
wrapperFloat = 1.25f;
wrapperChar = 'c';
wrapperBoolean = true;
System.out.println("Auto Boxing int -> Int : " + wrapperInt);
System.out.println("Auto Boxing long -> Long : " + wrapperLong);
System.out.println("Auto Boxing short -> Short : " + wrapperShort);
System.out.println("Auto Boxing byte -> Byte : " + wrapperByte);
System.out.println("Auto Boxing double -> Double : " + wrapperDouble);
System.out.println("Auto Boxing float -> Float : " + wrapperFloat);
System.out.println("Auto Boxing char -> Character : " + wrapperChar);
System.out.println("Auto Boxing boolean -> Boolean : " + wrapperBoolean);
3. ラッパークラスのインスタンスからプリミティブ型に変換
- ラッパークラス -> プリミティブ型への変換は各ラッパークラスのxxxValue()メソッドを使って行います。
// xxxValue()メソッドを使い変換
int primitiveInt = wrapperInt.intValue();
long primitiveLong = wrapperLong.longValue();
short primitiveShort = wrapperShort.shortValue();
Byte primitiveByte = wrapperByte.byteValue();
double primitiveDouble = wrapperDouble.doubleValue();
float primitiveFloat = wrapperFloat.floatValue();
char primitiveChar = wrapperChar.charValue();
boolean primitiveBoolean = wrapperBoolean.booleanValue();
System.out.println("Int -> int : " + primitiveInt);
System.out.println("Long -> long : " + primitiveLong);
System.out.println("Short -> short : " + primitiveShort);
System.out.println("Byte -> byte : " + primitiveByte);
System.out.println("Double -> double : " + primitiveDouble);
System.out.println("Float -> float : " + primitiveFloat);
System.out.println("Character -> char : " + primitiveChar);
System.out.println("Boolean -> boolean : " + primitiveBoolean);
- xxxValue()メソッドを使わず、ラッパークラスの参照変数を代入する方法でも変換できます。
こちらの機能を**オートアンボクシング(Auto Unboxing)**と言います。
primitiveInt = wrapperInt;
primitiveLong = wrapperLong;
primitiveShort = wrapperShort;
primitiveByte = wrapperByte;
primitiveDouble = wrapperDouble;
primitiveFloat = wrapperFloat;
primitiveChar = wrapperChar;
primitiveBoolean = wrapperBoolean;
System.out.println("Auto UnBoxing Int -> int : " + primitiveInt);
System.out.println("Auto UnBoxing Long -> long : " + primitiveLong);
System.out.println("Auto UnBoxing Short -> short : " + primitiveShort);
System.out.println("Auto UnBoxing Byte -> byte : " + primitiveByte);
System.out.println("Auto UnBoxing Double -> double : " + primitiveDouble);
System.out.println("Auto UnBoxing Float -> float : " + primitiveFloat);
System.out.println("Auto UnBoxing Character -> char : " + primitiveChar);
System.out.println("Auto UnBoxing Boolean -> boolean : " + primitiveBoolean);
4. 文字列を数字に変換する
各ラッパークラスの**'parseXxx()メソッド'を使い**変換できます。
String intStr = "123";
int intFromStr = Integer.parseInt(intStr);
String doubleStr = "3.15";
double doubleFromStr = Double.parseDouble(doubleStr);
System.out.println("String -> Int : "+intFromStr);
System.out.println("String -> Double : "+doubleFromStr);
5. 数字を文字列に変換する
各ラッパークラスの**'toString()メソッド'を使い変換でき、'String.valueOf()メソッド'を用いて変換できます。**
String strFromInt = Integer.toString(intFromStr);
String strFromInt2 = String.valueOf(intFromStr);
System.out.println("Int -> String using Integer.toString : "+strFromInt);
System.out.println("Int -> String using String.valueOf : "+strFromInt2);
String strFromDouble = Double.toString(doubleFromStr);
String strFromDouble2 = String.valueOf(doubleFromStr);
System.out.println("Double -> String using Integer.toString : "+strFromDouble);
System.out.println("Double -> String using String.valueOf : "+strFromDouble2);
※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_10_Wrapper.java
※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/82?category=1068655