🔙뒤로가기
무엇이 기본값 타입인가?
- 변수에 값을 직접 저장하는 형태의 데이터 타입을 말한다.
- Java에서는 int, double, char 등과 같은 기본 타입(primitive type)을 기본값 타입으로 사용하며, 이에 상응하는 객체 타입으로는 Integer, Double, String 등과 같은 래퍼 클래스(wrapper class)가 있다.
기본값 타입의 생명주기 이해하기
class Member {
String name;
int age;
}
- 기본값 타입은 엔티티의 생명주기에 종속된다.
- 예를 들어, 회원을 삭제하면 이름과 나이 필드도 함께 삭제된다.
기본 타입의 공유를 피하는 이유
기본값 타입을 공유하면 여러 객체에서 같은 값을 참조하게 되고, 한 객체에서 값을 변경 시 다른 객체에서도 값이 변경되는 문제가 발생할 수 있다.
예를 들어, 회원 A의 이름을 변경하면 회원 B의 이름도 함께 변경되는 상황이 발생할 수 있다. 다행히, Java의 기본 타입(primitive type)은 값 자체를 복사하기 때문에 공유에 대한 걱정이 없다.
int a = 10;
int b = a;
b = 20; // 'a'의 값은 여전히 10이다.
참조 타입 이해하기
참조 타입은 객체의 메모리 주소를 저장하며, 래퍼 클라스와 특수한 클래스가 이에 해당한다.
- 래퍼 클래스와 특수한 클래스
- 래퍼 클래스: Integer, Double 등 기본 타입을 객체로 포장한 클래스
- 특수한 클래스: String 등 특별한 특성을 가진 클래스
- 객체 공유의 가능성
- 참조 타입은 메모리 주소를 저장하기 때문에 객체 공유가 가능하다. 그러나 객체가 변경되면 문제가 발생할 수 있으므로 불변성을 유지해야 한다.
- 불변 객체의 안전한 공유
- 불변 객체는 내부 상태를 변경할 수 없기 때문에 여러 객체에서 안전하게 공유할 수 있다. Integer와 String과 같은 불변 객체는 이러한 특성 때문에 안전하게 공유할 수 있다.
- 변경 가능한 객체와 공유 주의
- 변경 가능한 객체를 공유하면 한 객체에서 값을 변경하면 다른 객체에서도 값이 변경되는 문제가 발생할 수 있다. 따라서 변경 가능한 객체를 사용할 때는 공유하지 않도록 주의해야 한다.
참조 타입 요약
- 참조 타입은 객체의 메모리 주소를 저장하며, 래퍼 클래스와 특수한 클래스로 구성된다.