반응형
안녕하세요 코이킹입니다.
이번 포스트에서는 래퍼 클래스에 대해서 설명하겠습니다.
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); // 같은 기능이 String에도 있음.
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); // 같은 기능이 String에도 있음.
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
※ qiita에 투고한 URL
반응형
'프로그래밍 > Java-문법정리' 카테고리의 다른 글
【Java문법】맵(Map) (0) | 2022.01.10 |
---|---|
【Java문법】리스트(List) (0) | 2022.01.10 |
【Java문법】표준입출력 (0) | 2022.01.09 |
【Java문법】메서드 (0) | 2022.01.09 |
【Java문법】배열 (0) | 2022.01.09 |
댓글