자바를 공부하다 보면 equals()와 hashCode()는 항상 같이 오버라이드하라는 말을 많이 듣는다.처음에는 “둘 다 객체 비교와 관련 있나 보다.” 정도로만 생각했는데, 실제로는 둘의 역할이 완전히 다르다.이번 글에서는 간단한 예제를 통해 왜 두 메서드를 함께 재정의해야 하는지 알아보자.자바는 기본적으로 객체의 주소를 비교한다다음 코드를 보자.// Money는 사용자가 정의한 클래스이다.Money m1 = new Money(5000);Money m2 = new Money(5000);System.out.println(m1.equals(m2));결과는 무엇일까?false대부분의 사람은 5000원과 5000원이니까 true를 예상한다.하지만 자바는 기본적으로 객체의 값을 비교하지 않는다.m1 -> 메모..