[Java] equals() & hashCode() 깊게 보기 - 31의 의미, String 내부 동작
·
Java
equals()와 hashCode()Java에서 객체를 비교할 때 가장 헷갈리는 개념이 ==, equals(), hashCode()이다. 이 셋이 어떻게 다른지, 왜 equals()를 오버라이드하면 hashCode()도 같이 오버라이드해야 하는지,그리고 hashCode() 내부에서 왜 하필 31을 곱하는지까지 정리해봤다.객체 비교 3가지=대입 연산자==동일성 비교 — 같은 객체인가? (주소값)equals()동등성 비교 — 논리적으로 같은가? (내용) 기본형은 주소 개념이 없으니 ==으로 값 자체를 비교한다.반면 참조형(객체)은 == 이 참조값을 비교하기 때문에 내용이 같아도 다른 객체로 판별된다.Person p1 = new Person("홍길동", 20);Person p2 = new Person("홍길동..