안녕하세요, 여행벌입니다.

오늘은 자바의 Wrapper 클래스에 대해서 알아보겠습니다.


Wrapper 클래스

 자바에는 다음과 같은 기본 자료형들이 있습니다. boolean, char, byte, short, int, long, float, double

 이런 기본 자료형들을 인스턴스로 표현해야하는 상황을 위해 Wrapper 클래스가 존재합니다.

 

 Wrapper 클래스는 이름 그대로 "기본자료형의 값을 감싸는 클래스"로 오로지 기본 자료형을 인스턴스로 표현하기 위해 존재합니다.

 모든 기본 자료형마다 Wrapper 클래스가 다음과 같이 존재하고, 기본 자료형을 Wrapper 클래스로 감싸는 행위를 Boxing, Wrapper 클래스에서 기본 자료형 값을 꺼내오는 행위를 UnBoxing 이라고 합니다.

1
2
3
        Integer int1 = new Integer(7); // 박싱
        Double double1 = new Double(4.5); // 박싱
        Boolean bool1 = new Boolean(false); // 박싱
cs

 위와 같이 인스턴스를 생성할 수 있습니다.

오토 박싱(Auto Boxing) & 오토 언박싱(Auto UnBoxing)

 자바 5부터 Wrapper 클래스와 기본 자료형 간의 박싱, 언박싱을 자동으로 지원해주기 시작했습니다.

 따라서, 다음과 같은 코드도 구현이 가능합니다.

1
2
3
4
5
6
7
8
public class test{
    public static void main(String args[]) {
        Integer a = 5// 오토박싱 Wrapper클래스를 생성해서 기본 자료형 5를 저장
        int b = a; // 오토 언박싱 Wrapper 클래스에서 기본 자료형 값 5를 꺼내옴.
        Double c = 5.0// 오토박싱
        double d = c; // 오토언박싱
    }
}
cs

Wrapper 클래스 사용예시

 Wrapper 클래스는 기본 자료형의 값을 인스턴스로 만들어주기 위해 등장했다고 했습니다. 그럼, 어떤 경우에 Wrapper 클래스를 활용할 수 있을까요??

 

 Object 를 입력으로 받는 메소드가 있다고 합시다. 이 메소드에 기본 자료형의 값을 매개변수로 전달 할 수 없습니다. 하지만, Wrapper 클래스를 활용해 인스턴스를 메소드의 매개변수로 전달하면 메소드를 기본 자료형에 대해서도 이용할 수 있습니다.

1
2
3
4
5
6
7
8
public class test{
    static void exMethod(Object obj) {
        System.out.println(obj);
    }
    public static void main(String args[]) {
        test.exMethod(new Integer(5));
    }
}
cs

 자바 5에서부터 오토박싱과 오토언박싱을 진행하므로 다음과 같이 인자를 전달해도 됩니다.

1
2
3
4
5
6
7
8
public class test{
    static void exMethod(Object obj) {
        System.out.println(obj);
    }
    public static void main(String args[]) {
        test.exMethod(5);
    }
}
cs

다음 포스팅에서는 Wrapper 클래스의 상위 클래스인 Number 클래스에 대해서 다뤄보겠습니다.

 

 

+ Recent posts