2013년 1월 15일 화요일

[Java] Wrapper 클래스

프로그래밍에서 데이터의 자료형은 엄격하기 마련이다. 
따라서 항상 데이터형을 잘 매치시켜주는 것이 중요하다.

add(Object obj);
오브젝트형 obj를 인자로 받아야하는 add메소드에 100이라는 정수가 전달 되어 호출될 수 있을까???

원래는 절대 불가능하다. 어떻게 int형 정수가 참조변수인 Object형이 되겠는가.

하지만! 자바에서는 가능하다. 그 이유가 바로 wrapper클래스 덕분이다.

Integer obj = new Integer(1324);

Integer라는 클래스를 생성하면서 정수 1324를 전달하고 있다. 이것이 의미하는 바는 정수가 객체화 되는 것을 볼 수 있는 것이다. 이제 obj는 완벽한 하나의 객체이다. 따라서 Object형 객체로서 마음껏 활용가능하다는 것이다.

int num = obj.intValue();

다음은 obj 객체를 다시 정수로 변환하는 것을 보여준다.

그러나 이렇게 명시적으로 형을 변환시켜 주지 않더라도 자동으로 형이 변하는 경우가 상당히 많다. 그것을 Boxing과 Unboxing이라고 한다.

따라서 위에 

add(100);
이란 메소드를 호출하면 정수 100이 Integer클래스로 Boxing이 자동적으로 되고 

int sum = obj + 20;
을 하게 되면 obj는 자동적으로 Unboxing이 되어 정수가 된다.

좋지 아니한가???

댓글 없음:

댓글 쓰기