본문 바로가기

Java

Java 래퍼(wrapper) 클래스, 오토박싱과 언박싱

 

wrapper class

8개의 기본형을 객체로 다루기 위해 사용하는 클래스

기본형을 감싸는 기능

class Ex9_14 {
	public static void main(String[] args) {
		Integer i  = new Integer(100);
		Integer i2 = new Integer(100);

		System.out.println("i==i2 ? "+(i==i2));
		System.out.println("i.equals(i2) ? "+i.equals(i2)); // 같으면 true,  다르면 false 
		System.out.println("i.compareTo(i2)="+i.compareTo(i2)); // 같으면0, 작으면 양수, 크면 음수// 정렬에서 사용됨  
		System.out.println("i.toString()="+i.toString());

		System.out.println("MAX_VALUE="+Integer.MAX_VALUE); // Integer 최대 값 약 20억 
		System.out.println("MIN_VALUE="+Integer.MIN_VALUE); // Integer 최소 값 약 -20억 
		System.out.println("SIZE="+Integer.SIZE+" bits"); // Integer 비트 32bit 
		System.out.println("BYTES="+Integer.BYTES+" bytes"); // Integer 4byte 
		System.out.println("TYPE="+Integer.TYPE); // Integer의 기본형 int 
		// wrapper클래스는 기본형의 정보를 가지고 있다는 것을 확인할 수 있음
	}
}

 

 

오토박싱 & 언박싱

1) 필요성

- JDK1.5이전에는 기본형과 참조형 간 연산이 불가능했기 때문에 래퍼 클래스로 기본형을 객체로 만들어서 연산해야 했음

- 컴파일러가 자동으로 변환해주는 코드를 넣어주어 기본형과 참조형 간 연산이 가능해졌는데 이것을 오토박싱과 언박싱이라고 함

 

2) 정의 

- 오토박싱(autoboxing): 기본형 값을 래퍼 클래스의 객체로 자동 변환해주는 것

-  언박싱(unboxing): 래퍼 클래스의 객체를 기본형으로 변환해주는 것

 

// 컴파일 전 코드
int i = 5;
Integer iObj = new Integer(7);

int sum = i + iobj;


// 컴파일 후 코드
int i = 5;
Integer iobj = new Integer(7);

int sum = i + iobj.intValue();

 

- Vecter클래스나 ArrayList클래스에 기본형 값 저장, 형변환 시에도 컴파일러가 자동으로 코드를 추가해줌

ArrayList<Integer> list = new ArrayList<Integer>();
list.add(10); // 오토박싱, 10을  newInteger(10)으로 자동추가

int value = list.get(0); // 언박싱, new Integer(10)을 10으로 자동추가

 

 

'Java' 카테고리의 다른 글

Java 날짜와 시간, Calendar 클래스  (0) 2022.12.30
Java Number클래스  (0) 2022.12.30
Java Math 클래스  (0) 2022.12.30
Java StringBuilder / StringBuffer 클래스  (0) 2022.12.30
Java String 클래스  (0) 2022.12.30