Primitive Type
int, char, byte, short, float, double, long, boolean
- 원시 타입은 기본 데이터타입 입니다.
- 메모리에서 고정된 크기를 가지고 있습니다.
- 효율성과 간결성을 위해 사용되며 추가적인 오버헤드 없이 데이터를 표현합니다.
- 일반적으로 스택 메모리에 저장됩니다.
Boxing Type
Integer, Character, Byte, Short, Float, Double, Long, Boolean
- 원시타입을 객체로 처리하는 것입니다.
- Collection(List, Map..etc) 혹은 Generic 클래스에서 사용할수 있습니다.
- 박싱 타입은 문자열로 변환하거나 비교 혹은 수학적 계산을 수행하는 등의 연산을 수행하기 위한 메서드를 제공합니다.
More
- Primitive Type이 Boxing Type 변수에 할당될때 “boxing”이라는 과정이 발생합니다.
- Boxing Type이 Primitive Type에 할당 될때 “Unboxing”이라는 과정이 발생합니다.
Integer boxed = Integer.valueOf(2222); // boxing
int unboxed = boxed.intValue(); // unboxing
More 2
자바에서는 “autoboxing” 과 “auto unboxing”을 지원하는데 두 타입간에서 완벽하게 지원되지는 않습니다.
- 자바에서는 Primitive type과 Reference type을 함꼐 사용할때 몇 가지 문제가 생길수 있습니다.
-
Null값 할당
int primitive = null; // 에러 발생!
Integer boxed = null; // 정상적으로 null을 할당할 수 있음
-
메서드 호출
- primitive type과 reference타입을 혼용할때, 성능상 부담이 될수 있습니다.
List<Integer> list = new ArrayList<>();
list.add(42); // 자동 박싱
int value = list.get(0); // 자동 언박싱