Java

[Java] 변수 원시 타입(Primitive Type) VS 참조 타입(Reference Type)

cloud-grace 2024. 5. 25. 14:01

Java에서는 데이터 타입이 2가지로 나뉜다.

Java 변수 원시 타입(Primitive Type)

  • 원시 타입(Primitive Type)은 정수, 실수, 문자, 논리 리터럴 등의 실제 데이터 값을 저장하는 타입이다.
  • JVM의 정적 메모리 Stack 영역에 변수 이름의 메모리 공간이 생성되고 실제 값이 데이터 값이 들어간다.
  • 원시 타입은 Null을 담을 수 없으며, 값이 없으면 default 값을 반환한다. (예를 들어, int는 0, boolean은 false)
  • 원시 타입은 제네릭(generic) 타입에서 사용할 수 없다.
종류 데이터형 크기(byte/bit) 표현 범위
논리형 boolean 1/8 true or false
문자형 char 2/16 '\u0000' ~ \uFFFF' 16bit 유니코드 문자 데이터
정수형 byte 1/8 -128 ~ 127
정수형 short 2/16 -32768 ~ 32767
정수형 int 4/32 -2147483648 ~ 2147483647(-21억  ~ +21억)
정수형 long 8/64 -9223372036854775808 ~ 9223372036854775807(-100경 ~ +100경)
실수형 float 4/32 1.4E-45 ~ 3.4028235E38
실수형 double 8/64 4.9E-324 ~ 1.7976931348623157E308

Java 변수 참조 타입(Reference Type)

  • 참조 타입(Reference Type)은 문자열(String), 배열(Array), 열거형(Enum), 상수(Constant), 클래스(Class), 인터페이스(Interface) 등, 객체(Object)의 주소를 저장하는 타입이다.
  • 추가로, 사용자가 필요하면 참조형 타입을 정의할 수도 있다.
  • JVM의 동적 메모리 Heap 영역에 실제 객체가 저장되고 참조 타입 변수는 JVM Stack 영역에 실제 객체 주소를 저장한다.
  • 이 객체를 사용할 때 참조 변수에 저장된 객체 주소를 불러와서 사용한다.
  • 원시 타입과 달리 참조 타입은 실제 값이 Heap 영역에 있기 때문에 최소 2번 메모리 접근을 해야해서 언박싱 과정에서 원시 타입에 비해 접근 속도가 느리다.
  • 또한, 참조 타입이 원시 타입보다 메모리 양이 훨씬 크다.
  • 참조 타입은 Null을 담을 수 있다.
  • 참조 타입은 제네릭(generic) 타입에서 사용할 수 있다.