자바를 배우면서 처음으로
Integer를 사용해봤다. c++ 배울 때도, python 배울 때도 항상int만 사용해왔었는데, 자바에서 일반 변수는int로 정의하고 ArrayList는Integer로 정의했다. 두 차이가 뭔지 정리해본다.
int와 Integer는 둘 다 정수를 나타내는 자료형이다.
자료형은 기본 타입과 참조 타입으로 나뉘어진다. 기본 타입은 int, char, boolean 등 8개의 기본 타입이 있고, 참조 타입은 ArrayList, class 등 기본 타입을 제외한 나머지다.
코드를 구현할 때 ArrayList는 다양한 타입을 한 번에 담을 수 있지만 정수형만 담을 수 있는 리스트가 필요하기도 하다. (기본 타입형을 객체로 표현하고 싶은 경우) 이럴 때, 기본 타입을 객체로 다루기 위해서 래퍼 클래스를 사용한다.
자바에서 모든 기본 타입은 래퍼 클래스를 이용해서 객체를 생성할 수 있다. 기본 타입 값을 내부에 두고 래퍼 클래스로 포장하는 형태다. 래퍼 클래스로 감싸고 있기 때문에 외부에서 형변환을 할 수 없다.
기본 타입을 감싸는 래퍼 클래스는 아래와 같다.
| Primitive Type | Wrapper Clas |
|---|---|
| boolean | Boolean |
| char | Character |
| byte | Byte |
| short | Short |
| int | Integer |
| long | Long |
| double | Double |
| float | Float |
기본 타입을 래퍼 클래스로 감싸 객체로 만드는 것을 박싱이라 하고, 반대로 객체에서 기본 타입 값을 꺼내는 것을 언박싱이라고 한다.
래퍼클래스 타입과 기본 타입이 매칭 될 땐 자동 박싱과 자동 언박싱 된다.
래퍼 클래스 상속계층도

모든 숫자 래퍼 클래스들의 조상은 Number 클래스이고 모든 래퍼 클래스의 조상은 Object 클래스다.
참고 자료