int a = 10;int b = 10;Address a = new Address("서울시","종로구","1번지");Address b = new Address("서울시","종로구","1번지");
int a의 숫자 10과 int b의 숫자 10은 같다고 표현한다.Address a와 Address b는 같다고 표현한다.자바가 제공하는 객체 비교 2가지 - 동일성 비교 : 인스턴스의 참조 값을 비교, == 사용 - 동등성 비교 : 인스턴스의 값을 비교, equals() 사용
Address 값 타입을 a == b로 동일성 비교하면 둘은 서로 다른 인스턴스이므로 결과는 거짓이다. 이것은 기대한 결과가 아니다. 값 타입은 인스턴스가 달라도 그 안에 값이 같으면 같은 것으로 봐야 한다.
따라서 값 타입을 비교할 때는 a.equals(b)를 사용해서 동등성 비교를 해야 한다. 물론 Address의 equals() 메소드를 재정의해야 한다.
값 타입의 equals() 메소드를 재정의할 때는 보통 모든 필드의 값을 비교하도록 구현한다.