Programming/Java

원시(Primitive) 타입과 참조(Reference) 타입

사랑우주인 2022. 2. 11. 15:00


primitive type

- 실제 데이터 값을 저장하는 타입

- 스택에 값 존재

 

reference type

- 인스턴스 번지 값(주소 값)을 저장하는 타입

- 스택에 번지 값 존재

- 힙에 실제 값(인스턴스) 존재

 

reference 타입을 사용하는 이유는?

1. null을 담을 수 있는가?

- primitive type: X

- reference type: O 

2. 제네릭 타입을 사용할 수 있는가?

- primitive type: X

- reference type: O

 

primitve 타입을 사용하는 이유는? 

1. 접근 속도

primitive type: 스택에 메모리 존재

reference type: 참조 값은 스택, 실제 값은 힙에 존재. 실제 값 필요할 때마다 언박싱 과정 필요. 

2. 차지하는 메모리 양

primitive type<< reference type


결론

성능과 메모리 장점이 있는 primitive 타입을 먼저 고려한다. 만약 null을 다뤄야 하거나, 제네릭 타입이 사용되어야 한다면 reference 타입을 사용한다.

 

주의

참조 변수는 비교 연산 시 주의가 필요하다. 참조 변수는 객체 번지 값을 가지고 있기 때문에, value 비교가 의도라면 ==가 아닌 equals()를 사용해야 한다.