본문 바로가기

Java

equals ,hashCode 메소드

반응형

equals() 재정의를 통해 어떤 경우에 같은 것인지 설정 해 줄 수 있음.


equals의 매개변수가 Object이므로 instanceof로 해당 객체가 원하는 객체 타입인지 조사 후에
다운캐스팅 해서 자신의 멤버 변수와 매개변수의 멤버 변수가 같은지 어떤지 비교 가능.

@Override
public boolean equals(Object obj)
{

if(obj instanceof Student)
{
Student std = (Student)obj;

if(this.name == std.name && this.studentnum == std.studentnum)
return true;
else
return false;

}
return false;}

 

 

hashCode() 메서드
인스턴스가 저장된 가상머신의 주소 10진수로 반환.
hash -> 인스턴스 생성시 가상 메모리 주소

두 개의 인스턴스가 동일하다는 것은
equals()값이 true고 hashCode()의 값이 동일.

hashCode()는 equals() true일 때 같은 값을 반환하도록 해서 동일성 부여
그렇다고 실제 주소가 같아지는 것은 아님.

 

hashCode()를 재정의 해서 동일성 부여 하는 방법은, equals()에서 사용한 변수를 반환하는 것임.

그러면 equals()가 true라면 그 변수는 두 객체가 다 같을 것이므로 같은 값을 반환하도록 설계됨.

다르면 다른 studentnum을 가질 것이므로 다른 값 반환 동일성 x

 

@Override
public int hashCode()
{

return studentnum;


}

 



실제 메모리 주소는

System.identifyHashCode(Object obj);

반응형

'Java' 카테고리의 다른 글

String 객체  (0) 2019.10.30
Clone 메소드  (0) 2019.10.29
Object 클래스  (0) 2019.10.29
자바 연습 (equals, hashCode)  (0) 2019.10.29
자바 연습 (인터페이스)  (0) 2019.10.28