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()를 사용해야 한다.