Java

[Java] Primitive type과 Reference type

최블랙 2022. 1. 3. 16:58

자바에서 타입을 크게 두 가지로 분류할 수 있다.

하나는 원시 타입(primitive type), 또 다른 하나는 참조 타입(reference type)이다.

원시 타입: boolean(1 byte), char (2 bytes), byte(1 byte), short(2 bytes), int(4 bytes), long(8 bytes), float(4 bytes), double(8 bytes)

참조 타입: Integer, Long, Double 등 new 연산자로 생성할 수 있는 객체

원시 타입 vs 참조 타입

원시 타입과 참조 타입의 기능적 차이는 크게 2가지가 있다.

1. null을 담을 수 있는가 ❔

원시 타입은 null을 담을 수 없지만 참조 타입은 null을 담을 수 있다.

int i = null; // 불가능
Integer integer = null; // 가능

2. 제네릭 타입에서 사용할 수 있는가

원시 타입은 제네릭 타입에서 사용할 수 없지만 참조 타입은 제네릭 타입에서 사용할 수 있다.

List<int> i; // 불가능
List<Integer> integer; // 가능

그렇다면 원시 타입의 장점은 무엇인가 ❔❔

원시 타입은 참조 타입과 비교해 성능의 이점이 있다.

1. 접근 속도

원시 타입은 메모리 상 스택 영역에 값이 존재하는 반면, 참조 타입은 스택 영역에 참조값만 있고, 실제 값은 힙 영역에 존재한다. 그래서 값이 필요할 때마다 언박싱 과정을 거쳐야 하기 때문에 원시 타입과 비교해 접근 속도가 느리다.

출처:&amp;amp;amp;nbsp;https://www.baeldung.com/java-primitives-vs-objects

2. 메모리

원시 타입에 비해 참조 타입이 차지하는 메모리 양이 훨씬 많다.

원시 타입 참조 타입
 boolean - 1 bit Boolean - 128 bits
bypte - 8 bits Byte - 128 bits
short, char - 16 bits Short, Character - 128 bits
int, float - 32 bits Integer, Float - 128 bits
long, double - 64 bits Long, Double - 192 bits

Reference

https://siyoon210.tistory.com/139

 

Java에서 원시타입 vs 참조타입 어떤 걸 사용해야 할까?

[개요] 자바에서 숫자를 다루기 위한 타입들은 크게 두 가지로 분류할 수 있습니다. 하나는 '원시 타입(primitive type)'이고, 또 다른 하나는 참조 타입(reference type)'입니다. 원시 타입은 (int, double, boo

siyoon210.tistory.com

https://www.baeldung.com/java-primitives-vs-objects