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 |