본문 바로가기

언어공부/Java

자바 래퍼(Wrapper)클래스, 오토박싱, 언박싱

자바 래퍼(Wrapper)클래스, 오토박싱, 오토언박싱에 대해 알아보자

래퍼(Wrapper)클래스

래퍼클래스는 자바의 기본 자료형 8개를 포장해서 클래스화 한것을 뜻한다. 때로는 기본형 변수도 객체로 다뤄야 하는 경우가 있는데 예를 들어 매개변수로 객체를 요구할 때, 기본형 값이 아닌 객체로 저장해야할 때, 객체간의 비교가 필요할 때 등등의 경우에는 기본형 값들을 객체로 변환하여 작업을 수행해야 한다.

 

래퍼클래스 종류

 

래퍼 클래스의 생성자는 매개변수로 문자열이나 각 자료형들의 값들을 인자로 받는다. 이 때 주의해야할 것은 생성자의 매개변수로 문자열을 제공할 때, 각 자료형에 알맞은 문자열을 사용해야 한다.

ex) new Integer("1.0"); // >>NumberFormat Exception발생

 

래퍼 클래스들은 모두 equals()메소드가 오버라이딩이 되어있어 주소값이 아닌 객체가 가지고 있는 값을 비교한다. 또한 toString()도 오버라이딩 되어 있어서 객체가 가지고 있는 값을 문자열로 변환하여 반환한다.

 

문자열을 숫자로 변환하기

 

다음은 문자열을 숫자로 변환하는 다양한 방법이 있다.

public class WrapperEx {

	public static void main(String[] args) {
    	int i=new Integer("100").intValue();
        //floatValue(),longValue(), etc...
        
        int i2=Integer.parseInt("100");
        //제일 잘쓰는 방법. 문자열 >> 반환값 기본형
        //static int parseInt(String s,int radix) 또는
        //static Integer valueOf(String s, int radix)로
        //문자열 s를 radix진법으로 인식해 출력할 수 있다.
        //ex) Integer.parseInt("100",2)는 100(2)로 4가 출력.
        
        Integer i3=Integer.valueOf("100");
        //문자열 >> 반환값 래퍼클래스
    }

16진법에서는 'A~F'의 문자도 허용하므로 "Integer.parseInt("FF",16)"이 가능하지만, 진법을 생략하면 10진수로 간주하기 때문에 "Integer.parseInt("FF")"는 NumberFormatException이 발생한다.

 


오토박싱&언박싱

오토박싱은 자바 기본 타입을 래퍼클래스형으로 자동 형변환해주는 것을 말하며, 언박싱은 래퍼클래스형이 기본 타입으로 형변환 하는 것을 말한다. 참고로 오토박싱은 jdk 1.5이후부터 도입되었다.

 

ex)

출력화면