해당 클래스에 대하여

래퍼 클래스는 프리미티브(원시) 타입을 객체로 표현할 수 있도록 도와주는 클래스다. 프리미티브 타입이 실제 데이터 값을 저장하는 타입이라면, 반대로 레퍼런스(참조) 타입은 객체를 참조하는 타입이다.

클래스명 프리미티브 타입
Byte byte
Short short
Integer int
Long long
Character char
Float float
Double double
Boolean boolean

오토박싱, 언박싱

박싱은 프리미티브 타입의 데이터를 래퍼 클래스의 객체로 만드는 과정이고, 언박싱은 그 반대다.

1
2
3
4
5
6
7
public class Wrapper {
public static void main(String[] args) {
int i = 10;
Integer integer = new Integer.valueOf(i); //Boxing
i = integer.intValue(); //UnBoxing
}
}

래퍼 클래스에 대입된 값은 프리미티브 타입이 아니라 참조 타입이므로, 단순 비교로는 값이 아니라 주소값을 비교하게 된다. 인스턴스(객체)를 생성하면 Heap에 저장되고, 그 객체를 가리키는 변수는 Stack에 저장되어 주소값을 갖기 때문이다. 따라서 값을 비교하려면 equals를 쓰거나, 데이터를 프리미티브 타입으로 변환(언박싱)한 뒤 비교해야 한다.

자료구조

자료구조는 데이터를 효율적으로 다룰 수 있도록 미리 짜놓은 구조를 말한다.

종류 클래스명
List(리스트) ArrayList, LinkedList(Vector)
Stack(스택) LinkedList(Stack)
Queue(큐) LinkedList
Hash Table(해시 테이블) HashMap
Set(집합) HashSet

스택은 데이터를 넣은 순서의 역순으로만 꺼낼 수 있는 자료구조다. 바구니를 떠올리면 이해하기 쉽다. 바구니 맨 아래에 있는 물건을 바로 꺼낼 수 없는 것과 같다.

는 데이터를 넣은 순서와 같은 순서로만 꺼낼 수 있는 자료구조다. 놀이기구를 타기 전 줄을 선 순서대로 탑승하는 것과 같다.

**셋(집합)**은 수학의 집합 개념처럼, 데이터를 중복으로 저장하지 않는 자료구조다.

다음 포스팅에서는 네스티드 클래스와 인터페이스에 대해 다룰 예정이다.