LoginSignup
0
0

More than 1 year has passed since last update.

【Java文法】ラッパークラス

Last updated at Posted at 2022-01-09

こんにちは、コイキングです。

本記事では'ラッパークラス'について、説明したいと思います。


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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0