본문 바로가기

Languages/Java

Primitive Type, Reference Type

Primitive Type

기본형 데이터 타입은 Java에서 가장 기본적인 데이터 타입으로, 메모리(JVM의 스택)에 고정된 크기를 차지한다.

Primitive values do not share state with other primitive values.

두 변수가 동일한 메모리 위치에 저장된 값을 가리키거나 서로 영향을 미치지 않는다.

Primitive Type에는 아래와 같은 종류가 있다.

또한 Primitive Type은 default 값으로 초기화된다.

크기 default value
정수형 byte 1 byte 0
short 2 byte 0
int 4 byte 0
long 8 byte 0L
실수형 float 4 byte 0.0f
double 8 byte 0.0d
문자형 char 2 byte '\u0000'
논리형 boolean 1 byte false

Reference Type

객체의 참조 주소를 저장하는 데이터 타입이다. 참조형 변수에는 힙 메모리에 생성된 객체의 주소값을 저장한다.

클래스, 인터페이스, Array, Enum 등이 여기에 포함된다.

Wrapper Class

Primitive Type를 객체로 감싸는 클래스이다. Java의 모든 Primitive Type에는 대응하는 Wrapper Class가 있으며, 이를 사용하면 Primitive Type을 객체로 다룰 수 있다.

정수형 Byte
Short
Integer
Long
실수형 Float
Double
문자형 Character
논리형 Boolean

래퍼 클래스는 객체로서의 기능을 제공하기 때문에, 메서드를 가질 수 있고, null 값을 저장할 수 있으며, 제네릭 같은 곳에서 기본형을 사용할 수 없는 경우에 활용된다.

Boxing

Primitive Type을 래퍼 Wrapper Class 객체로 변환하는 과정입니다. Java5부터는 컴파일러는 이 변환을 자동으로 처리해주며, 개발자가 명시적으로 변환 코드를 작성할 필요가 없다. 이를 오토박싱이라고 한다.

오토박싱의 예

int primitiveInt = 10;
Integer boxedInt = primitiveInt; 

Unboxing

Wrapper Class 객체를 Primitive Type으로 변환하는 과정입니다. 마찬가지로 Java5부터는 컴파일러가 자동으로 처리해주며, 개발자가 명시적으로 변환 코드를 작성할 필요가 없다.

오토언박싱의 예

Integer boxedInt = new Integer(10);
int primitiveInt = boxedInt;

'Languages > Java' 카테고리의 다른 글

WeakHashMap과 약한 참조  (0) 2023.08.31
예외처리  (0) 2023.05.24
JVM과 GC  (0) 2023.04.12
[Java] HashMap, HashTable, HashSet  (0) 2023.04.12
Object Mapper  (0) 2023.04.07