본문 바로가기
프로그래밍/Java-문법정리

【Java문법】래퍼클래스

by 코이킹 2022. 1. 10.
반응형

안녕하세요 코이킹입니다. 

 

이번 포스트에서는 래퍼 클래스에 대해서 설명하겠습니다. 

 


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

https://qiita.com/Koiking-L/items/fbeff48b08504dc20e60

반응형

'프로그래밍 > 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

댓글