|
| 1 | +--- |
| 2 | +title: '래퍼(Wrapper), Class 클래스' |
| 3 | +date: '2026-03-18T08:15:58+09:00' |
| 4 | +categories: ["Java"] |
| 5 | +tags: ["java.lang", "Wrapper", "Class", "System", "Math", "Random"] |
| 6 | +draft: true |
| 7 | +--- |
| 8 | + |
| 9 | +## Wrapper 클래스 |
| 10 | + |
| 11 | +### 기본형의 한계 |
| 12 | + |
| 13 | +- 언어에 지원을 받는데 한계가 있음(메서드, 컬렉션 프레임워크, 제네릭 등을 사용하지 못함) |
| 14 | +- `null`을 표현할 수 없음 |
| 15 | + |
| 16 | +### 래퍼 클래스 사용 |
| 17 | + |
| 18 | +- 래퍼 클래스는 기본형을 객체로 감싼 형태로 편리한 기능을 지원한다. |
| 19 | +- 래퍼 클래스는 불변이고 `equals`로 비교해야 한다. |
| 20 | +- 박싱(Boxing)은 기본형을 래퍼 클래스로 변경하는 작업이다. 반대로 래퍼 클래스를 기본형으로 변경하는 작업은 언박싱(Unboxing)이다. |
| 21 | +- 박싱은 `클래스.valueOf()` 형식을 사용한다. |
| 22 | +- 주요 메서드와 성능 |
| 23 | + |
| 24 | +### 오토 박싱(Autoboxing) |
| 25 | + |
| 26 | +- 기본형을 참조형으로 박싱할 때는 `valueOf()` 메서드를 사용한다. 반대로 언박싱은 `기본형타입Value()` 메서드를 사용한다. |
| 27 | +- 박싱과 언박싱은 자주 사용하는 작업이다. Java는 Java 1.5부터 오토 박싱(Auto-boxing), 오토 언박싱(Auto-Unboxing)을 지원한다. |
| 28 | +- 오토 박싱과 오토 언박싱은 컴파일 단계에 코드가 자동으로 추가된다. 덕분에 기본형과 래퍼형 변환이 간편하다. |
| 29 | + |
| 30 | +### 주요 메서드와 성능 |
| 31 | + |
| 32 | +- `valueOf()`: 래퍼 타입으로 변환한다. 숫자, 문자열 모두 지원한다. |
| 33 | +- `parseInt()`: 문자열을 기본형으로 변환한다. |
| 34 | +- `compateTo()`: 인수로 넘어온 값을비교한다. 크면 `1`, 같으면 `0`, 작으면 `-1`을 반환한다. |
| 35 | +- `Integer.sum()`, `Integer.min()`, `Integer.max()`: `static` 메서드, 덧셈, 최소값, 최대값 연산을 수행한다. |
| 36 | + |
| 37 | +> [!NOTE] parseXXX() vs. valueOf() |
| 38 | +> |
| 39 | +> - 래퍼타입을 반환할 때는 `valueOf()`를 사용하고 기본형을 반환할 때는 `parseXXX()`를 사용한다. |
| 40 | +
|
| 41 | +## Class 클래스 |
| 42 | + |
| 43 | +- 클래스의 정보(메타 데이터)를 다루는 클래스 |
| 44 | +- 실행중인 클래스의 속성과 메서드 정보를 조회하고 조작할 때 사용한다. |
| 45 | + - 타입 정보 얻기 |
| 46 | + - 리플렉션 |
| 47 | + - 동적 로딩과 생성 |
| 48 | + - 애노테이션 처리 |
| 49 | + |
| 50 | +## System 클래스 |
| 51 | + |
| 52 | +## Math, Random 클래스 |
| 53 | + |
| 54 | +## 질문 |
| 55 | + |
| 56 | +### 래퍼 클래스는 왜 `equals`로 비교해야 할까? |
| 57 | + |
| 58 | +- 래퍼 클래스는 객체다. `==`를 사용하면 참조값을 비교한다. 실제 내부의 값을 비교하기 위해서는 `equals`를 사용해야 한다. |
| 59 | + |
| 60 | +## 마치며 |
0 commit comments