데이터 유형
일반적으로 데이터 유형에는 3가지가 존재한다.
- 기본 데이터 유형(Native)
- 래퍼(Wrapper) 데이터 유형
- 사용자 정의 데이터 유형(User-defined)
기본 데이터 유형은 int, boolean, float, double, long과 같은 Primitive Type(원시 타입)의 데이터 유형을 말한다.
래퍼 데이터 유형은 위의 기본 데이터 유형을 변형을 Wrapper 클래스로 변형한 것이다.
- Integer(int)
- Boolean(boolean)
- Float(float)
- Double(double)
사용자 정의 데이터 유형(UDT)은 유저가 필요해 의해 연관성이 있는 변수들을 서로 묶어서 하나의 데이터 타입으로 만든 것이다. 지역번호와 여덟 자리로 이루어진 전화번호를 예시로 생각해 보자. 아래와 같이 변수를 묶어서 클래스화 할 수 있을 것이다.
class PhoneNumber {
int region; // 지역 번호(02)
int firstFourNumbers; // 처음 네자리(1234)
int lastFourNumbers; // 마지막 네자리(5678)
}
박싱(Boxing)과 언박싱(Unboxing)
박싱이란 기본 타입의 데이터를 래퍼 클래스의 인스턴스로 변환하는 과정을 말한다.
// boxing 박싱
int primitive = 500;
Integer wrapper = new Integer(primitive);
// unboxing 언박싱
primitive = wrapper.intValue();
박싱과 언박싱을 하는 이유?
박싱 이유
특정 상황에서 기본 타입 데이터를 래퍼 클래스 타입 데이터로 변환시켜야 하는 상황이 있다.
- 함수가 요구하는 매개변수의 데이터 타입이 래퍼 클래스 타입일 때
- 기본 타입 데이터를 ArrayList<Integer>, LinkedList<Integer>와 같은 컬렉션이나 제네릭(Generic) 클래스에 저장할 경우
// 오토박싱
int primitiveData = 100;
Integer wrappedData = primitiveData; // 자동 박싱 처리가 된다.
// 명시적 박싱
int primitiveData2 = 200;
Integer wrappedData2 = Integer.valueOf(primitiveData2);
언박싱 이유
언박싱은 박싱의 반대인 래퍼 클래스 타입 데이터를 기본 타입 데이터로 변환하는 과정이다.
먼저 래퍼 클래스 타입은 연산을 위해 만들어진 데이터 타입이 아니다. 따라서 래퍼 클래스 데이터의 연산을 위해선 언박싱 과정을 거쳐 기본 타입 데이터로 변환 후에, 연산을 진행하게 된다.
- 객체로 반환된 함수의 데이터 타입이 기본 데이터 타입으로 변환이 필요한 경우
- 컬렉션이나 제네릭 클래스에서 값을 가져오는 경우
// 오토언박싱
Integer wrappedData = 100;
int primitiveData = wrappedData; // 자동 언박싱 처리가 된다.
// 명시적 언박싱
Integer wrappedData2 = Integer.valueOf(200);
int primitiveData2 = wrappedData2.intValue();
Reference
https://gyoogle.dev/blog/computer-language/Java/Auto%20Boxing%20&%20Unboxing.html
[Java] 오토 박싱 & 오토 언박싱 | 👨🏻💻 Tech Interview
[Java] 오토 박싱 & 오토 언박싱 자바에는 기본 타입과 Wrapper 클래스가 존재한다. 기본 타입 : int, long, float, double, boolean 등 Wrapper 클래스 : Integer, Long, Float, Double, Boolean 등 박싱과 언박싱에 대한 개
gyoogle.dev
https://www.baeldung.com/cs/boxing-unboxing
https://inpa.tistory.com/entry/JAVA-%E2%98%95-wrapper-class-Boxing-UnBoxing
☕ 자바 Wrapper 클래스와 Boxing & UnBoxing 총정리
래퍼 클래스 (Wrapper Class) 이전 강의글에서 우리는 자바의 자료형은 기본 타입(primitive type)과 참조 타입(reference type) 으로 나누어지고 각 특징에 대해 알아보았다. 프로그래밍을 하다 보면 기본 타
inpa.tistory.com
'Java' 카테고리의 다른 글
[Java] 문자열 클래스 (0) | 2024.02.03 |
---|---|
[Java] 직렬화(Serialization) (0) | 2024.01.31 |
[Java] Primitive Type & Reference Type (0) | 2024.01.25 |
[Java] Call by value & Call by reference (0) | 2024.01.25 |
[Java] JVM과 컴파일 과정 (0) | 2024.01.20 |