Wrapper 클래스
Wrapper 클래스 개념
int, char, double 등 8개의 기본 타입을 객체로 다루기 위해 JDK에 만들어진 8개의 클래스를 통칭하여 Wrapper 클래스라 합니다.
Byte, Short, Integer, Long, Character, Double, Float, Boolean 클래스가 기본 타입에 해당되는 값을 다룰 수 있게 하는 Wrapper 클래스입니다.
기본 타입의 값을 객체로 만들어 사용할 수 있도록 Wrpper 클래스를 제공합니다. Wrapper 클래스들은 java.lang 패키지에서 제공됩니다.
| 기본 타입 | byte | short | int | long | char | float | double | boolean |
| Wrpper 클래스 | Byte | Short | Integer | Long | Character | Float | Double | Boolean |
Wrapper 클래스의 객체 생성
8개의 Wrapper 클래스들은 거의 비슷합니다. Wrapper 객체는 기본 타입의 값을 인자로 하여 다음 예와 같이 정적 메소드인 valueOf()를 호출하여 생성합니다.
Integer i = Integer.valueOf(10); // 정수 10의 객체화
Character c = Character.valueOf('c'); // 문자 'c'의 객체화
Double b = Double.valueOf(3.14); // 실수 3.14의 객체화
Boolean b = Boolean.valueOf(true); // 불린 값 true의 객체화
Character를 제외한 나머지 Wrapper 클래스의 경우, 다음과 같이 문자열로 Wrpper 객체를 생성할 수도 있습니다.
Integer i = Integer.valueOf("10");
Double d = Double.valueOf("3.14");
Wrapper 클래스의 활용
Wrapper 클래스는 많은 메소드를 제공하나, 대부분은 기본 타입 값을 문자열로 변환하거나, 문지열을 기본 타입 값으로 변환하는 것들이 주로 이루고 있습니다. 가장 많이 사용되는 Integer 클래스의 주요 메소드는 다음 표와 같으며, 많은 메소드가 static 타입입니다.
| 메소드 | 설명 |
| static int bitCount(int i) | 정수 i의 이진수 표현에서 1의 개수 리턴 |
| float floatValue() | float 타입으로 값 리턴 |
| int intValue() | int 타입으로 값 리턴 |
| long longValue() | long 타입으로 값 리턴 |
| short shortValue() | short 타입으로 값 리턴 |
| static int parseInt(String s) | 문자열 s를 10진 정수로 변환한 값 리턴 |
| static int parseInt(String s,.int radix) | 문자열 s를 지정된 진법의 정수로 변환한 값 리턴 |
| static String toBinaryString(int i) | 정수 i를 이진수 표현으로 변환한 문자열 리턴 |
| static String toHexString(int i) | 정수 i를 16진수 표현으로 변환한 문자열 리턴 |
| static String toOctalString(int i) | 정수 i를 8진수 표현으로 변환한 문자열 리턴 |
| static String toString(int i) | 정수 i를 문자열로 변환하여 리턴 |
| static Integer valueOf(int i) | 정수 i를 담은 Integer 객체 리턴 |
| static Integer valueOf(String s) | 문자열 s를 정수로 변환하여 담고 있는 Integer 객체 리턴 |
Wrapper 객체에 들어 있는 기본 타입 값 알아내기
Wrapper 객체에 들어 있는 기본 타입의 값을 알아내기 위헤 다음 코드를 이용합니다.
Integer i = Integer.valueOf(10);
int ii = i.intValue(); // ii = 10
Double d = Double.valueOf(3.14);
double dd = d.doubleValue(); // dd = 3.14
Boolean b = Boolean.valueOf(true);
boolean bb = b.booleanValue(); // bb = true
문자열을 기본 타입으로 변환
Wrapper 클래스는 다음과 같이 문자열을 기본 타입의 값으로 변환하는 메소드를 제공합니다.
int i = Integer.parseInt("123"); // i = 123
boolean b = Boolean.parseBoolean("true"); // b = true
double d = Double.parseDouble("3.14"); // d = 3.14
parseInt(), parseBoolean(), parseDouble() 메소드는 모두 static 타입으로 Wrpper 클래스의 이름으로 바로 메소드를 호출합니다. Wrapper 클래스는 해당 타입으로 변환하는 메소드만을 제공합니다. 예를 들어 Integer 클래스는 parseBoolean()이나 parseDouble()은 제공하지 않습니다.
기본 타입 값을 문자열로 변환
Wrapper 클래스는 다음 예와 같이 기본 타입 값을 문자열로 변환하여 메소드를 제공합니다.
String s1 = Integer.toString(123); // 정수 123을 문자열 "123"으로 변환
String s2 = Integer.toHexString(123); // 정수 123을 16진수의 문자열 "7b"로 변환
String s3 = Double.toString(3.14); // 실수 3.14를 문자열로 "3.14"로 변환
String s4 = Character.toString('a'); // 문자 'a'를 문자열 "a"로 변환
String s5 = Boolean.toString(true); // 불린 값 true를 문자열 "true"로 변환
Wrapper 클래스 활용
package example;
public class WrapperEx {
public static void main(String[] args) {
System.out.println(Character.toLowerCase('A'));
char c1 = '4', c2 = 'F';
if (Character.isDigit(c1)) // 문자 c1이 숫자이면 true
System.out.println(c1 + "는 숫자");
if (Character.isAlphabetic(c2)) // 문자 c2가 영문자이면 true
System.out.println(c2 + "는 영문자");
System.out.println(Integer.parseInt("-123")); // "-123"를 10진수로 변환
System.out.println(Integer.toHexString(28)); // 정수 28을 2진수 문자열로 변환
System.out.println(Integer.toBinaryString(28)); // 28을 16진수 문지열로 변환
System.out.println(Integer.bitCount(28)); // 28에 대한 2진수의 1의 개수
Double d = Double.valueOf(3.14);
System.out.println(d.toString()); // Double을 문자열 "3.14"로 변환
System.out.println(Double.parseDouble("3.14")); // 문자열을 실수 3.14로 변환
boolean b = (4 > 3); // b는 true
System.out.println(Boolean.toString(b)); // true를 문자열 "true"로 변환
System.out.println(Boolean.parseBoolean("false")); // 문자열을 false로 변환
}
}
실행 결과
a
4는 숫자
F는 영문자
-123
1c
11100
3
3.14
3.14
true
false
박싱(boxing)과 언박싱(unboxing)
기본 타입의 값을 Wrapper 객체로 변환하는 것을 박싱(boxing)이라 하고, 반대의 경우를 언박싱(unboxing)이라고 합니다.

박싱과 언박싱은 자동으로 이루어지며, 이를 자동 박싱(auto boxing), 자동 언박싱(auto unboxing)이라고 부릅니다.
Integer ten = 10; // 자동 박싱. Integer tem = Integer.valueOf(10); 로 자동 처리됨.
int n = ten; // 자동 언박싱. int n = ten.intValue();로 자동 처리됨.
박싱과 언박싱
package example;
public class AutoBoxingUnBoxingEx {
public static void main(String[] args) {
int n = 10;
Integer intObject = n; // auto boxing
System.out.println("intObject = " + intObject);
int m = intObject + 10; // auto unboxing
System.out.println("m = " + m);
}
}
실행 결과
intObject = 10
m = 20
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
| StringBuffer 클래스 (0) | 2025.03.13 |
|---|---|
| String 클래스 (0) | 2025.03.11 |
| Object 클래스 (0) | 2025.03.06 |
| 자바 JDK에서 제공하는 패키지 (1) | 2025.03.03 |
| 화면 설계 (1) | 2025.02.28 |