원시타입과 참조 타입

profile image 스이연 2025. 5. 4. 02:32

자바에서 자료 타입은 원시타입(Primitive Type)과 참조타입(Reference Type)으로 나뉜다.

이 두가지 타입 간에는 분명한 차이가 존재하며 필요에 따라 사용되는 것이 다르기 때문에 차이를 이번 공부로 확실히 알아둘 것이다.

 

⚫️ 원시 타입(Primitive Type)

논리형 boolean true / false
문자형 char  
정수형 byte -128 ~127
  short -32768 ~ 32767
  int -2147483648 ~ 2147483647
  long -9223372036854775808 ~ 9223372036854775807
실수형 float 1.4E-45 ~ 3.4028235E38
  double 4.9E-324 ~ 1.7976931348623157E308

 

정수, 실수, 문자, 논리 리터럴 등의 실제 데이터 값을 저장하는 타입이다.

값 자체를 스택 메모리에 저장한다. 따라서 값을 비교할 때 값 자체를 비교한다.

연산이 빠르며 메모리 효율성이 높다.

NULL 값을 가질 수 없다.

 

⚫️ 참조 타입(Reference Type)

 

객체의 번지를 참조하는 타입으로 메모리 번지 값을 통해 객체를 참조하는 타입이다.

종류에는 클래스, 인터페이스, 배열, 열거형 등이 있다.

객체는 힙 메모리에 저장되고 객체를 가리키는 참조를 스택에 저장한다. 따라서 실제 메모리에 접근하기 위해서는 최소 2번의 메모리 접근을 해야하고 일부 타입은 필요시 언박싱 과정을 거치기 때문에 속도가 느리다.

값을 비교 할 때 메모리 주소를 비교하고 값과 상관 없이 오로지 객체의 메모리 주소가 같아야 같은 것으로 인식한다.

메모리 사용이 많다.

NULL 값을 가질 수 있다.

 

⚫️ 오토박싱 & 언박싱

원시 타입과 참조 타입이 서로 상호 작용할 때 오토박싱과 언박싱이 활용된다.

오토박싱과 언박싱은 성능에 영향을 미칠 수 있으므로 잦은 사용을 피해야한다.

 

📌 오토박싱

원시 타입을 대응되는 참조 타입으로 변환하는 과정

📌 언박싱

참조 타입을 다시 원시 타입으로 자동 변환하는 과정

 

⚫️ Wrapper 클래스

Wrapper 클래스란 기본 타입(Primitive type) 의 데이터를 객체로 표현할 수 있게 하는 클래스다.

기본 타입(Primitive type) 래퍼 클래스(Wrapper class)
byte Byte
char Character
int Integer
float Float
double Double
boolean Boolean
long Long
short Short

 

 

출처:https://coding-factory.tistory.com/547

이와 같은 계층 구조 처럼 모든 Wrapper 클래스는 Object 클래스의 자식 클래스이고 숫자를 다루는 래퍼 클래스의 부모 클래스는 Number 클래스임을 알 수 있다.

 

Wrapper 클래스의 활용

  • Collection(List, Map) 에 숫자나 논리 값을 넣을 때 활용한다.
  • NULL 값을 넣거나 비교해야 할 때 활용한다.
  • 객체처럼 다뤄야할 때 활용한다.

원시타입과 Wrapper 클래스의 차이

  원시 타입 Wrapper 클래스
메모리 저장 값 자체 저장 객체의 주소 저장
NULL 가능 여부 불가능 가능
메서드 사용 불가능 가능
성능 빠름 느릴 수 있음

 

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

Interface와 Abstract  (1) 2025.06.15
JVM이 무엇이고 구조에 대해 알아보자  (0) 2025.05.10
의존성에 대해서  (2) 2025.03.20
BufferedReader와 BufferedWriter  (2) 2025.02.15
객체지향에게 역할과 책임이란  (1) 2025.02.11