래퍼 클래스와 자료구조
해당 클래스에 대하여
래퍼 클래스는 프리미티브(원시) 타입을 객체로 표현할 수 있도록 도와주는 클래스다. 프리미티브 타입이 실제 데이터 값을 저장하는 타입이라면, 반대로 레퍼런스(참조) 타입은 객체를 참조하는 타입이다.
| 클래스명 | 프리미티브 타입 |
|---|---|
| Byte | byte |
| Short | short |
| Integer | int |
| Long | long |
| Character | char |
| Float | float |
| Double | double |
| Boolean | boolean |
오토박싱, 언박싱
박싱은 프리미티브 타입의 데이터를 래퍼 클래스의 객체로 만드는 과정이고, 언박싱은 그 반대다.
1 | public class Wrapper { |
래퍼 클래스에 대입된 값은 프리미티브 타입이 아니라 참조 타입이므로, 단순 비교로는 값이 아니라 주소값을 비교하게 된다. 인스턴스(객체)를 생성하면 Heap에 저장되고, 그 객체를 가리키는 변수는 Stack에 저장되어 주소값을 갖기 때문이다. 따라서 값을 비교하려면 equals를 쓰거나, 데이터를 프리미티브 타입으로 변환(언박싱)한 뒤 비교해야 한다.
자료구조
자료구조는 데이터를 효율적으로 다룰 수 있도록 미리 짜놓은 구조를 말한다.
| 종류 | 클래스명 |
|---|---|
| List(리스트) | ArrayList, LinkedList(Vector) |
| Stack(스택) | LinkedList(Stack) |
| Queue(큐) | LinkedList |
| Hash Table(해시 테이블) | HashMap |
| Set(집합) | HashSet |
스택은 데이터를 넣은 순서의 역순으로만 꺼낼 수 있는 자료구조다. 바구니를 떠올리면 이해하기 쉽다. 바구니 맨 아래에 있는 물건을 바로 꺼낼 수 없는 것과 같다.
큐는 데이터를 넣은 순서와 같은 순서로만 꺼낼 수 있는 자료구조다. 놀이기구를 타기 전 줄을 선 순서대로 탑승하는 것과 같다.
**셋(집합)**은 수학의 집합 개념처럼, 데이터를 중복으로 저장하지 않는 자료구조다.
다음 포스팅에서는 네스티드 클래스와 인터페이스에 대해 다룰 예정이다.
댓글



