클래스를 선언할때 다른 클래스를 상속하지 않으면
Object 클래스를 상속하게 된다.
따라서 모든 클래스는 Object클래스의 자식 클래스이다.
객체는 달라도 내부 데이터가 같은지 비교하는 것
public class Member {
private int no;
private String name;
public Member(int no, String name) {
this.no = no;
this.name = name;
}
public int getNo() {
return no;
}
public String getName() {
return name;
}
// no, name 해시코드를 합한 해시코드를 리턴
// (no, name 이 같으면 동일한 해시코드가 생성된다)
@Override
public int hashCode() {
int hashCode = no + name.hashCode();
return hashCode;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Member target) {
if (no == target.getNo() && name.equals(target.getName())) {
return true;
}
}
return false;
}
}
public class HashCodeExample {
public static void main(String[] args) {
Member member1 = new Member(1, "홍길동");
Member member2 = new Member(1, "홍길동");
if (member1.hashCode() == member2.hashCode()) {
if (member1.equals(member2)) {
System.out.println("동등 객체");
} else {
System.out.println("데이터가 다릅니다.");
}
} else {
System.out.println("해시코드가 다릅니다.");
}
}
}
실행시 콘솔 창
동등 객체