가장 단순하고 효율적인 데이터 타입으로, 메모리 공간을 최소화하며 값 자체를 저장
[Java에서 제공하는 8가지 기본형]
| 데이터 타입 | 크기(비트) | 기본값(default) | 예시 |
|---|---|---|---|
byte | 8 | 0 | -128 ~ 127 |
short | 16 | 0 | -32,768 ~ 32,767 |
int | 32 | 0 | -2³¹ ~ 2³¹-1 |
long | 64 | 0L | -2⁶³ ~ 2⁶³-1 |
float | 32 | 0.0f | 소수점 7자리 |
double | 64 | 0.0d | 소수점 15자리 |
char | 16 | '\u0000' | 문자 하나 ('A', '0') |
boolean | 1 | false | true / false |
null 불가능기본형 데이터를 객체(object)로 다룰 수 있도록 감싸주는 클래스
[Java에서 제공하는 각각의 기본형에 대해 대응되는 래퍼 클래스]
| 기본형 | 래퍼 클래스 |
|---|---|
byte | Byte |
short | Short |
int | Integer |
long | Long |
float | Float |
double | Double |
char | Character |
boolean | Boolean |
ArrayList, HashMap)에서 사용 가능null 가능Integer.parseInt("123") (문자열을 정수로 변환)| 특성 | 기본형 | 래퍼 클래스 |
|---|---|---|
| 저장 방식 | 값 자체 저장 | 객체로 값을 감싸서 저장 |
| 메모리 사용 | 더 적음 | 더 많음 |
| 연산 속도 | 더 빠름 | 더 느림 |
null 허용 여부 | 불가능 | 가능 |
| 메서드 제공 | 없음 | 값 변환, 비교 등의 메서드 제공 |
| 컬렉션 사용 가능 여부 | 불가능 | 가능 |
기본 데이터 타입(primitive type)과 그에 대응되는 래퍼 클래스(wrapper class) 간의 변환을 설명하는 개념
기본 데이터 타입에 대응하는 래퍼 클래스의 객체로 변환하는 과정
int를 Integer로 변환ArrayList, HashMap 등)와 같은 곳에서는 객체만 저장할 수 있으므로, 기본 데이터 타입을 객체로 변환해야 할 때 사용int primitiveValue = 10;
Integer boxedValue = Integer.valueOf(primitiveValue); // 명시적 Boxing
래퍼 클래스 객체를 다시 기본 데이터 타입으로 변환하는 과정
Integer를 int로 변환Integer wrapperValue = Integer.valueOf(10);
int unboxedValue = wrapperValue.intValue(); // 명시적 Unboxing
Java 5부터 도입된 기능으로, 기본 데이터 타입을 래퍼 클래스 객체로 자동 변환
Integer.valueOf() 등을 호출하지 않아도 컴파일러가 자동으로 처리int primitiveValue = 10;
Integer autoBoxedValue = primitiveValue; // 컴파일러가 Integer.valueOf() 자동 호출
Java 5부터 도입된 기능으로, 래퍼 클래스 객체를 기본 데이터 타입으로 자동 변환
intValue() 등을 호출하지 않아도 컴파일러가 자동으로 처리합Integer wrapperValue = 20;
int autoUnboxedValue = wrapperValue; // 컴파일러가 wrapperValue.intValue() 자동 호출
주의할 점
null이면 NullPointerException이 발생null이 될 수 없기 때문Integer wrapperValue = null;
int num = wrapperValue; // NullPointerException 발생| 개념 | 정의 | 예시 |
|---|---|---|
| Boxing | 기본 타입 → 래퍼 클래스 객체 변환 | Integer.valueOf(primitiveValue) |
| Unboxing | 래퍼 클래스 객체 → 기본 타입 변환 | wrapperValue.intValue() |
| Auto-boxing | 기본 타입 → 객체 변환을 컴파일러가 자동 처리 | Integer obj = 10; |
| Auto-unboxing | 객체 → 기본 타입 변환을 컴파일러가 자동 처리 | int num = wrapperValue; |