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) 타입에서 사용할 수 있다.