본문 바로가기

자바/자바 개념

[Java] Wrapper 클래스 / 2021.11.17

* 참고 자료 : 명품 자바 프로그래밍

 

1. Wrapper 클래스 개념

이름이 Wrapper인 클래스는 존재하지않는다. 다만 int, char, double 등 8개의 기본 타입을 객체로 다루기 위해 JDK에 만들어진 8개의 클래스를 통칭하여 Wrapper 클래스 라고한다. Byte, Short, Integer, Long, Character, Double, Float, Boolean 클래스가 기본 타입에 해당되는 값을 객체로 다룰 수 있게 하는 Wrapper 클래스이다.

 

기본 타입과 그에 대응하는 Wrapper 클래스 :

 

기본 타입 byte short int long char float double boolean
Wrapper 클래스 Byte Short Integer Long Character Float Double Boolean

 

Wrapper 클래스들은 어디에 사용될까 ? 

자바는 객체 지향 언어이므로 객체를 대상으로 처리하는 경우가 많다. JDK의 어떤 클래스는 객체만을 다루기 때문에 3, 'a' 등 기본 타입의 데이터는 사용할 수 없다 이런 문제점을 해결하기 위해 기본 타입의 값을 객체로 만들어 사용할 수 있도록 Wrapper 클래스를 제공한다. Wrapper 클래스들은 java.lang 패키지에서 제공된다.

 

2. Wrapper 클래스의 객체 생성

8개의 Wrapper 클래스들은 거의 비슷하다. Wrapper 객체는 기본 타입의 값을 인자로 하여 정적 메소드인 valueOf()를 호출하여 생성한다.

 

Integer i = Integer.valueOf(10); // 정수 10의 객체화
Character c = Character.valueOf('c'); // 문자 'c'의 객체화
Double d = Double.valueof(3.14); // 실수 3.14의 객체화
Boolean b = Boolean.valueOf(true); // 불린 값 true의 객체화

// Character를 제외한 나머지 Wrapper 클래스의 경우 문자열로 객체를 생성할 수 있다.
Integer i = Integer.valueOf("10");
Double d = Double.valueOf("3.14");

 

3. Wrapper 클래스의 활용

Wrapper 클래스는 많은 메소드를 제공한다. 대부분은 기본 타입 값을 문자열로 변환하거나 문자열을 기본 타입 값으로 변환하는 것이다. 

 

Integer 클래스의 주요 메소드 : 

 

메소드 설명
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 객체 리턴

 

(1) 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

 

(2) 문자열을 기본 타입으로 변환

 

int i = Integer.parseInt("123"); // i = 123
boolean b = Boolean.parseBoolean("true"); // b = true
double d = Double.parseDouble("3.14"); // d = 3.14

 

(3) 기본 타입 값을 문자열로 변환

 

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"로 변환