Notice
Recent Posts
Recent Comments
Link
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags more
Archives
Today
Total
관리 메뉴

jeongwon

Wrapper class 본문

JAVA

Wrapper class

jeongwon_ 2022. 5. 12. 03:26

 

기본형(primitive type) 변수를 객체로 다뤄야 하는 경우, 기본자료형을 클래스로 정의한 Wrapper 클래스를 사용한다. 

내부적으로 기본형 변수를 지니고 있으며, Wrapper 클래스의 종류는 다음과 같다.

 

Byte, Short, Integer, Long, Float, Double, Character, Boolean, Void

 

기본 자료형을 객체에 저장하는 것을 Boxing, 객체에서 기본자료형을 꺼내는 것을 UnBoxing 이라 한다.

 


 

//기본자료형 변수 선언
		int num1=20;
		int num2;
//Integer(Wrapper class)의 참조변수 선언
Integer i1;	//null
Integer i2 = new Integer(50);//Auto Boxing

 

i1 은 아직 저장하고 있는 참조값이 없다. 

i2 에는 50 이라는 정수가 저장되었는데, 어떻게 기본 자료형이 객체에 저장된 것일까?

자바는 jdk1.5부터 참조변수에 값(value)이 들어갈 수 있도록 했다. 내부적으로 intValue() 같은 메소드를 호출시켜 자동으로 Boxing 처리를 해주는 것이다.

 

i1 = num1; //auto boxing
num2 = i2;	//auto unboxing
System.out.println(num1+","+i1);	//20,20
System.out.println(num2+","+i2);	//50,50

 

이어서 객체 Integer 형 i1 에 기본자료형 변수 num1의 값을 저장하고,

기본자료형 변수 num2 에 객체 Integer 형 i2에 저장된 값을 저장했다.

마찬가지로 내부적 처리를 통해 에러 없이 수행되었다.

 


 

실제 쓰는 일은 없지만, class의 최고 조상인 Object 를 통해 객체 간의 Auto Boxing을 살펴보면

 

Object[] obj1= {50,90.5,4,true,"java",'A'}; //auto boxing
for(Object o : obj1) {
System.out.println(o);//auto unboxing

 

Object 배열에 담긴 각각의 요소들은 Auto Boxing을 통해 각각 객체가 된다. 때문에 메모리 낭비가 심하다.

(참고: ArrayList등의 컬렉션을 이용하면 메모리낭비를 줄일 수 있다. )