값 유형은 객체의 복잡한 세계를 좀 더 단순하게 만들기 위해 만들어진 개념입니다.
따라서 값 유형은 사용하기 쉽고 안전해야 합니다.
값 유형의 공유 참조
- 포함된 유형과 같은 값 유형이 여러 엔터티 간에 공유될 때 위험합니다.
- 부작용 발생
값 유형 복사
- 값 유형의 실제 인스턴스인 값을 공유하는 것은 위험합니다.
- 대신 값(인스턴스)을 복사하여 사용하십시오.
개체 유형 제한
- 항상 값을 복사하면 공유 참조로 인한 부작용을 피할 수 있습니다.
- 문제는 직접 정의된 값 유형입니다. 예를 들어 포함된 유형은 Java 기본 유형이 아니라 객체 유형입니다.
- Java 기본 유형에 값을 지정하면 값이 복사됩니다.
- 개체 유형은 참조 값의 직접 할당을 방지할 방법이 없습니다.
- 개체의 공통 참조는 피할 수 없습니다.
불변 객체
- 객체 유형을 불변으로 만들면 부작용이 모두 차단됩니다.
- 값 유형은 변경 불가능한 객체로 설계되어야 합니다.
- Immutable Objects: 생성 후 절대값을 변경할 수 없는 객체.
- 생성자만 사용하고 수정자는 사용하지 않고 값을 설정합니다.
- 참고: Integer 및 String은 Java에서 제공하는 대표적인 불변 객체입니다.
– 불변성이라는 작은 제한으로 부작용이라는 큰 재앙을 막을 수 있습니다.
값 유형 비교
값 유형: 인스턴스가 다르더라도 인스턴스의 값이 동일하면 동일한 것으로 간주됩니다.
- 동일성 비교(Identity) : 인스턴스의 기준값 비교, == 사용
- 동등성: equals()를 사용하여 인스턴스의 값을 비교합니다.
- 값 유형은 a.equals(b)를 사용하여 동일한지 비교해야 합니다.
- 그에 따라 값 유형의 equals() 메서드를 재정의합니다.