equals()는 두 객체를 논리적으로 같은가를 확인한다. 하지만 주소값을 비교하기 때문에, 실제 값을 비교하기 위해선 재정의가 필요하다. *이때 hashcode()도 같이 재정의한다.
주로 값 클래스 (Integer, String)처럼 값을 표현하는 클래스를 정의한다 객체가 같은지가 아니라 값이 같은지 알고 싶을때
재정의 해야 하는 이유: 같은 값을 가진 객체가 서로 다른 해시값을 갖게 될 수 있다.