1️⃣ 래퍼 클래스란?
- 기본자료형을 객체로 감싸는 클래스임.
기본 자료형 (Primitive Type) | 래퍼 클래스 (Wrapper Class) |
---|---|
byte |
Byte |
short |
Short |
int |
Integer |
long |
Long |
float |
Float |
double |
Double |
char |
Character |
boolean |
Boolean |
2️⃣ 기본형(Primitive Type)의 종류
자료형 | 종류 | 범위 | 바이트 | 비트 |
---|---|---|---|---|
boolean |
논리형 | true/false | 1 | 8 |
char |
문자형 | 0 ~ 65535 유니코드 값 | 2 | 16 |
byte |
정수형 | -128 ~ 127 | 1 | 8 |
short |
정수형 | -32,768 ~ 32,767 | 2 | 16 |
int |
정수형 | -2,147,483,648 ~ 2,147,483,647 | 4 | 32 |
long |
정수형 | -9,233,372,036,854,775,808 ~9,233,372,036,854,775,807 | 8 | 64 |
float |
실수형 | 약 소수점 6~7자리까지 | 4 | 32 |
double |
실수형 | 약 소수점 15~17자리까지 | 8 | 64 |
3️⃣ 참조형(Reference Type)
- 변수에 객체가 담기면 해당 변수를
참조형변수
- 참조형 변수는 데이터가 저장된 메모리 주소를 가리킴 →
Heap
메모리 주소 - 객체 데이터는
Heap
영역에 저장되어 있기 때문입니다. 객체
,배열
등이 참조형에 속합니다.(https://sintory-04.tistory.com/138)
Person personA = new Person("Steve"); // ✅ 객체가 담긴 personA 는 참조형 변수입니다.
Syetem.out.println(personA.name);
System.out.println(personA); // ✅ 출력하면 @123 메모리의 주소값이 출력됩니다.
// ---------
int[] arr = {1, 2, 3, 4}; // ✅ 배열이 담긴 arr 는 참조형 변수입니다.
System.out.println(arr); // ✅ 출력하면 @123 메모리의 주소값이 출력됩니다.
4️⃣ 래퍼클래스
1. 래퍼 클래스도 객체이다.
- 래퍼클래스가 담겨 있는 변수도 참조형 변수이다.
- 하지만 출력시 메모리 주소값이 나오지 않는다. → 내부적으로
toString()
이 오버라이딩되어 있기 때문입니다.
Integer num = 100;
System.out.println(num); // 출력 100
- 위에서
toStiring()
얘기를 했는데, 원래int
와 같은 기본형은.toStirng()
기능이 지원되지 않는다. > 알고리즘 문제에 유용하다는 것!! 하지만, 메모리를 많이 사용하기 때문에 기본형을 변형하는 방법을 생각하는게 좋다는 것..
2. 사용이유
- 기본형은 객체처럼 속성, 기능을 가질 수 없다.
- 하지만
객체
는 기능을 제공할 수 있다. - 기본형을 감싼 객체를 만들어 기능을 제공하면 편리하게 데이터처리를 할 수 있다. ->
toString
기능을 생각하면 된다.
5️⃣오토박싱과 언박싱
- 래퍼클래스 ↔ 기본형으로 형변환은 굉장히 자주 일어난다.
- Java에서는 이 형변환 과정을 자동으로 지원해준다.
1. 오토박싱
: 기본형 → 래퍼형으로 변환하는 과정을 오토박싱
Integer
는 참조형(객체)이지만 기본형int
값을 직접 대입할 수 있다.- 내부적으로 컴파일러가 자동으로
Integer.valueOf(10)
을 호출하여 객체를 생성하기 때문!
2. 언박싱
: 래퍼형 → 기본형으로 변환하는 과정으로 오토언박싱
num
은Integer
객체(참조형변수)지만 기본형int
변수에 대입할 수 있다.- 내부적으로 컴파일러가 자동으로
num.intValue()
를 호출하여 기본형으로 변환하기 때문!
6️⃣ 성능차이
: 래퍼형은 기본형에 비해 연산속도가 느리다.
toString()
과 같은 기능을 이용할 수 있는 만큼 연산이 느리다 !- 래퍼형은 내부적으로 데이터를 감싸고 있기 때문에 연산 시 불리하다.
- 객체에서 기본형 값을 꺼내서 연산하는 추가작업이 발생하기 때문!
- 이런 추가 작업때문에 기본형보다 래퍼클래스는 연산 속도가 느리다.
- 빠른 작업이 필요한 경우 기본형을 직접 활용하는 것이 좋은 선택이라고 한다.
'코딩 공부 > Java' 카테고리의 다른 글
[Java] Chpater 2- 05) final - 변하지 않는 값 (0) | 2025.02.25 |
---|---|
[Java] Chpater 2- 04) static - 클래스가 공유하는 공간 (0) | 2025.02.25 |
[Java] Chpater 2- 02) JVM 메모리 영역 (0) | 2025.02.25 |
[Java] Chpater 2- 01) 클래스와 객체 (1) | 2025.02.25 |
[Java]Chpater 1 - 10) 메서드 (0) | 2025.02.25 |