프로그래밍 언어/JAVA

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