본문 바로가기
JAVA/문법

자바 기본형 타입 vs 참조형 타입 차이점 정리

by 스코리아 2023. 8. 11.

안녕하세요. 스코리아입니다.

오늘은 자바 기본형 타입과 참조형 타입이 어떻게 다른지, 차이점에 대해서 정리해 보겠습니다.

 

자바를 공부하면서 참조형 타입은 꼭 알아야 할 주제 중 하나라고 생각합니다.

자바의 클래스, 인터페이스, 객체는 배우고 써왔는데, 참조형 타입과 기본형 타입의 차이를 모르고 있으면 안 됩니다:)

각각의 특징을 이해하고 정리해 보는 시간을 가져보겠습니다!

 

기본형 타입 vs 참조형 타입

  • 기본형 타입 (Primitive Type)
  • 기본형 타입에는 크게 정수형(byte, short, int, long), 실수형(float, double), 문자형(char), 논리형(boolean) 이 존재합니다.
  • 객체 타입이 아니므로, null 값을 가질 수 없습니다. (다만, 기본값은 존재)
  • 모든 값 타입은 메모리의 스택(Stack)에 저장됩니다.
  • 변수의 선언과 동시에 메모리가 생성됩니다.

자바 기본형 타입 (크기, 기본값, 범위)

int test1 = 3;
float test2 = 6.4;
char test3 = 'p';
boolean test4 = false;

 

  • 참조형 타입 (Reference Type)
  • 참조형 타입에는 클래스(Class), 인터페이스(Interface), 열거(Enum), 배열(Array)이 존재합니다.
  • 기본형과는 달리 실제 값이 저장되지 않고, 자료가 저장된 공간의 주소를 저장합니다.
  • 참조형 변수는 객체 타입이 가능하므로, null 값이 들어갈 수 있습니다.
  • 메모리의 힙(Heap)에 실제 값을 저장하고, 그 참조값(주소값)을 갖는 변수는 스택(Stack)에 저장합니다.

자바 기본형타입 vs 참조형타입

 

추가적인 참조형 타입의 종류로 객체, String, 날짜(Date), Map, Set 등도 존재합니다. 즉, 기본형 타입 8가지를 제외한 모든 타입이 참조형 타입에 해당합니다.

Student student = new Student(); // Student 객체
String test = "test"; // String
Date date = new Date(); // Date 객체

 

기본형 타입은 할당이나 연산 시 데이터가 복제되는 방식으로, 실제 데이터 값을 저장하는 타입으로 볼 수 있다면, 참조형 타입은 객체의 주소를 저장하는 타입이라고 볼 수 있습니다.

또한 기본형 타입이 참조형 타입에 비해 접근 속도가 훨씬 빠르고 메모리 양도 훨씬 적게 사용합니다. 다만, 참조형 타입을 통해 자바의 객체지향적인 설계가 가능하다는 점에서 참조형 타입은 자바에서 빠질 수 없는 매력적인 친구입니다.

 


지금까지 기본형 타입과 참조형 타입이 어떻게 다른지 쉽게 알아보았습니다.

읽어주셔서, 감사합니다.