Primitive 타입과 Reference 타입의 차이점은 무엇이 있고, 이에 대한 예시를 들어 설명해주세요. 혹시 어떤 상황에서는 Primitive 타입을 사용해야 하는지도 알려주세요.
Primitive 타입과 Reference 타입은
자바에서 데이터를 저장하고 처리하는 두가지 기본 방식이다.
1. 저장
Primitive 타입: 데이터는 스택 메모리에 직접 값을 저장
Reference 타입: 데이터는 힙 메모리에 객체를 저장, 스택메모리에는 그 객체를 가리키는 주소 값을 저장
2. 타입
Primitive 타입: int, float, double, boolean, char, byte, short, long
이들은 기본적인 데이터를 표현한다.
int age = 30;
double salary = 4550.50;
boolean isMarried = false;
Reference 타입: 배열array, 클래스class, 인터페이스interface, 객체의 참조를 저장
String name = "John Doe";// name은 String 객체의 참조를 저장
Integer ageWrapper = Integer.valueOf(30);// ageWrapper는 Integer 객체의 참조를 저장
List<String> cities = new ArrayList<>();
//실제 데이터는 힙 메모리에 저장
//name, ageWrapper, cities 변수들은 해당 메모리 위치를 가리키는 참조를 스택 메모리에 저장
3. 기본값
Primitive 타입: 선언될 때 기본값을 가진다.
예시: int -> 0
Reference 타입: 기본적으로 null을 가진다.
4. 성능
Primitive 타입이 메모리 사용이 더 효율적, 처리 속도도 빠르다.
Primitive 타입 사용 시기
1. 성능이 중요한 상황
데이터 처리 속도, 메모리 사용효율이 중요한 경우 Primitive 타입을 선호한다.
2. 기본값에 의존하는 상황
0, false 값이 필요할 때 Primitive 타입을 사용하는 것이 자연스럽다.
Reference 타입은 불필요하게 null 체크를 해야한다.
3. 단순 값의 저장과 처리
복잡한 객체가 아닌
단순한 값(숫자, 문자, 불리언)을 저장, 처리할때
Primitive 타입을 사용하는 것이 좋다. 이유는 코드를 간결하고 이해하기 쉽게 만든다.