Hello

Java equals(), hashCode(), toString()

by 볼빵빵오춘기

equals(Object obj) 의 오버라이딩

인스턴스 변수(iv)의 값을 비교하도록 equals()를 오버라이딩해야 한다.

예제 코드

public class Ex8_4 {

	public static void main(String[] args) {
		Person p1 = new Person(123L);
		Person p2 = new Person(123L);
		
		if(p1.equals(p2))
			System.out.println("p1 == p2 ");
		else 
			System.out.println("p1 != p2 ");
	}
	
}

class Person{
	long id;
	
	public boolean equals(Object obj) {
		if(obj instanceof Person)
			return id == ((Person) obj).id;
		else
			return false;
	}
	
	Person(long id){
		this.id = id;
	}
}

 

hashCode()

  • 객체의 해시코드(hash code)를 반환하는 메서드이다.
  • Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환한다.
  • native method이다.
    즉, OS의 메서드(C언어기반), JNI(자바와 자바가 아닌 언어가 서로 호출해서 사용할 수 있는 기술)이다.
  • equals()를 오버라이딩하면, hashCode()도 오버라이딩해야 한다.(equals()의 결과가 true인 두 객체의 해시코드는 같아야 하기 때문이다.)
  • System.identityHashCode(Object obj) 는 Object클래스의 hashCode()와 동일하다.

 

toString()

객체를 문자열(String)으로 변환하기 위한 메서드

블로그의 정보

Hello 춘기's world

볼빵빵오춘기

활동하기