[Java] equals() / hashcode()

equals()메서드

  • 두 인스턴스의 주소 값을 비교하여 true/false 반환
  • 인스턴스가 다르다라도 논리적으로 동일한 경우 true 반환하도록 재정의 할 수 있음

hashCode()메서드

  • hasCode()는 인스턴스의 저장 주소를 반환함
  • 힙메모리에 인스턴스가 저장되는 방식이 hash 방식
  • hash: 정보를 저장, 검색하는 자료구조
  • 자료의 특정 값(키 값)에 대한 저장 위치를 반환해주는 해시 함수를 사용
Student Lee = new Student(100, "kkk");
Student Lee2 = Lee;
Student Shun = new Student(100, "kkk");

System.out.println("Lee.hashCode() - " + Lee.hashCode()); // 1784662007
System.out.println("Shun.hashCode() - " + Shun.hashCode()); // 1789550256
System.out.println("Shun = " + Shun); // ch02.Student@6aaa5eb0
System.out.println("Lee = " + Lee);  // ch02.Student@6a5fc7f7
System.out.println("Lee.equals(Shun) = " + Lee.equals(Shun)); // false
System.out.println("Lee.equals(Lee2) - " + Lee.equals(Lee2)); // true
System.out.println("Lee == Lee2 - " + (Lee == Lee2)); // true


String str1 = new String("test");
String str2 = new String("test");

System.out.println("str2 = " + str2); // test
System.out.println("str1 = " + str1); // test
System.out.println(str1.equals(str2)); // true
System.out.println(str1 == str2); // false
System.out.println(str1.hashCode()); // 3556498
System.out.println(str2.hashCode()); // 3556498

댓글

Designed by JB FACTORY