[Java] 자바 - Wrapper클래스 개념 및 활용 (문자를 숫자로, 숫자를 문자로)
자바 - Wrapper클래스 개념 및 활용 (문자를 숫자로, 숫자를 문자로)
Wrapper클래스는 boolean, char, int, float, double과 같은 8개의 기본타입을 각각 객체로 사용하기 위한 클래스들을 말합니다.
자바에서 ArrayList<E>와 같은 collection 클래스는 요소 데이터를 객체로 요구하기 때문에 알아둘 필요가 있습니다.
목차
- Wrapper 클래스란?
- Wrapper 클래스 객체 생성방법
- 문자를 숫자로, 숫자를 문자로 변경하기
- 오토박싱과 오토언박싱 (auto boxing, auto unboxing)
- 사용예제
1. Wrapper 클래스란?
boolean, char, int, float와 같은 기본형 타입을 class로 감싸 객체처럼 사용할 수 있도록 한 클래스를 말합니다. Wrapper 클래스의 종류는 8가지로 각 기본형에 대응되는 Wrapper 클래스의 이름은 다음과 같습니다.
- (기본형) boolean → Boolean
- (기본형) byte → Byte
- (기본형) char → Character
- (기본형) short → Short
- (기본형) int → Integer
- (기본형) long → Long
- (기본형) float → Float
- (기본형) double → Double
2. Wrapper 클래스 객체 생성방법
Wrapper클래스의 객체 생성방법은 자바9 이후로는 생성자를 통한 객체 생성방법이 deprecated 되어 있고, 대신 valueOf()를 사용하도록 권장하고 있습니다. 또는 오토박싱(auto boxing)으로 인하여 기본형 데이터 값을 직접 대입하여 기본형처럼 사용할 수 있습니다.
- (방법1) Integer i1 = new
Integer(10); // deprecated since version 9 대신 valueOf()를 권장합니다. - (방법2) Integer i2 = Integer.valueOf(10); // 매개변수의 값(정수)을 Integer객체로 반환합니다.
- (방법3) Integer i3 = Integer.valueOf("10"); // 매개변수의 값(문자열로 표시된 정수)을 Integer객체로 반환합니다.
- (방법4) Integer i4 = 10; // 오토박싱(auto boxing)으로 직접 기본형 데이터를 대입합니다.
3. 문자를 숫자로, 숫자를 문자로 변경하기
wrapper클래스에서 제공하는 메서드를 이용하면, 문자를 숫자로, 또는 숫자를 문자로 변경할 수 있습니다.
1) 문자를 숫자로 변경하기
- static int parseInt(String s) : 문자열 s를 10진수로 int형으로 반환합니다.
- static int parseInt(String s, int radix) : radix진수로 표현된 문자열 s를 10진수 int형으로 반환합니다.
- static Integer valueOf(String s) : 문자열 s를 10진수 Integer 객체로 반환합니다.
- static Integer valueOf(String s, int radix) : radix진수로 표현된 문자열 s를 10진수 Integer 객체로 반환합니다.
2) 숫자를 문자로 변경하기
- static String toString(int i) : 정수 i를 문자열로 반환합니다.
- static String toString(int i, int radix) : 정수 i를 radix진수의 문자열로 반환합니다.
- static String toBinaryString(int i) : 정수 i를 2진수 문자열로 반환합니다.
- static String toOctalString(int i) : 정수 i를 8진수 문자열로 반환합니다.
- static String toHexString(int i) : 정수 i를 16진수 문자열로 반환합니다.
4. 오토박싱과 오토언박싱 (auto boxing, auto unboxing)
박싱(boxing)은 기본형 데이터를 Wrapper 객체로 변환해주는 것을 말하며, 반대로 Wrapper 객체를 기본형 데이터로 변환해주는 것을 언박싱(unboxing)이라고 합니다. 오토박싱(auto boxing)과 오토언박싱(auto unboxing)은 이것을 상황에 맞게 자동으로 해주는 것을 의미합니다.
오토박싱과 오토언박싱으로 인해 사용자는 Wrapper 객체를 기본형처럼 사용할 수 있습니다.
Integer i1 = 10; // 오토박싱
int i2 = i1; // 오토언박싱
5. 사용예제
Integer i1 = new Integer(10);
Integer i2 = Integer.valueOf(11);
Integer i3 = Integer.valueOf("12");
Integer i4 = 13;
int i5 = i1 + 10;
System.out.println("[i1]:"+i1+" [i2]:"+i2+" [i3]:"+i3+" [i4]:"+i4+" [i5]:"+i5);
System.out.println("[1] (문자열->int형으로) : " + Integer.parseInt("10"));
System.out.println("[2] (문자열->int형으로) : " + Integer.parseInt("F", 16));
System.out.println("[3] (문자열->Integer로) : " + Integer.valueOf("10"));
System.out.println("[4] (문자열->Integer로) : " + Integer.valueOf("F", 16));
System.out.println("[5] 10을 (문자열로) : " + Integer.toString(10));
System.out.println("[6] 10을 16진수 (문자열로) : " + Integer.toString(10, 16));
System.out.println("[7] 10을 2진수 (문자열로) : " + Integer.toBinaryString(10));
System.out.println("[8] 10을 8진수 (문자열로) : " + Integer.toOctalString(10));
System.out.println("[9] 10을 16진수 (문자열로) : " + Integer.toHexString(10));
[실행결과]
[i1]:10 [i2]:11 [i3]:12 [i4]:13 [i5]:20
[1] (문자열->int형으로) : 10
[2] (문자열->int형으로) : 15
[3] (문자열->Integer로) : 10
[4] (문자열->Integer로) : 15
[5] 10을 (문자열로) : 10
[6] 10을 16진수 (문자열로) : a
[7] 10을 2진수 (문자열로) : 1010
[8] 10을 8진수 (문자열로) : 12
[9] 10을 16진수 (문자열로) : a