본문 바로가기

기초 지식/Java

[Java] Java Primitive Type VS Reference Type

Java에서는 기본형 타입과 참조형 타입이 있습니다. 저도 너무나 자연스럽게 사용하고 있지만 아래의 질문을 받으니 대답 할 수가 없었습니다. 

 

Java에서 Primitive Type, Reference Type은 메모리 어디에 저장이 될까요?

이에 대한 정답은 아래에 정리하겠습니다.

 

1. Primitive Type (기본형 타입)

  • 기본값이 NULL이 아닌 값들로 이루어져있다.
  • 실제 값을 저장하고 메모리는 스택(Stack) 메모리에 저장된다.
  • 컴파일 에러를 발생시킨다.
타입 메모리 크기 기본값 표현 범위
boolean 1 byte false true, false
byte 1 byte 0 -128 ~ 127
short 2 byte 0 -32,768 ~ 32,767
int 4 byte 0 -2,147,483,648 ~ 2,147,483,647
long 8 byte 0L -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
float 4 byte 0.0F  (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값
double 8 byte 0.0  (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값
char 2 byte '\u0000'  0 ~ 65,535

 

2. Reference Type (참조형 타입)

  • 기본형 타입을 제외한 모든 타입
  • 기본값은 NULL이다.
  • 값이 저장되어 있는 곳의 주소값을 저장하고, 메모리는 힙(heap) 메모리에 저장된다.
  • 런타임 에러를 발생시킬 수 있다.
타입 예시 기본값 할당되는 메모리 크기
Array(배열) int[] array = new int[10]; NULL 4 byte (객체 주소값)
Enumeration(열거) Enumeration<String> e = ... NULL
Class(클래스) String str = "reference";
String str = new Student();
NULL
Interface(인터페이스)   NULL

 

3. 정리

위의 내용에서 주요한 차이점은 굵은 글자로 표시해두었습니다.

  • 실제값 vs 주소값
  • 스택(Stack) vs 힙(Heap)

 

반응형