Java/JAVA의 정석
equals()
Jenny_yoon
2022. 11. 18. 22:09
728x90
반응형
1) equals()
- boolean 타입
- 객체자신(this)과 주어진 객체(obj)를 비교. 같으면 true, 다르면 false.
- Object 클래스의 equals()는 객체의 주소를 비교 (참조변수 값 비교)
- 인스턴스변수(iv)의 값을 비교하도록 equals()를 오버라이딩 해야한다.
ex.예시
int value;
Value(int value){
this.value=value; }
public boolean equals(Object obj) { //2. Object의 equals()를 오버라이딩 -> 주소가 아닌 value를 비교
if(!(obj instanceof Value)) return false; //4. instanceof로 형변환 가능한지 확인
Value v = (Value)obj; //3.obj를 value로 형변환obj에는 value가 없기때문)!참조변수 형변환 전엔 반드시 instanceof로 확인해야함.
//주소비교할땐(항상 거짓) return this==obj;
return this.value==v.value;
}
}
public class Ex9_1 {
public static void main(String[] args) {
Value v1 = new Value(10);
Value v2 = new Value(10);
if(v1.equals(v2)) //1. equals()를 오버라이딩 하지 않으면 false
System.out.println("v1과 v2는 같다.");
else
System.out.println("v1과 v2는 다르다.");
}
}
더보기
실행결과 :
v1과 v2는 같다.
* equals()를 작동시킬 때, hashCoda() 메서드를 꼭 함께 실행시켜 주어야 한다.
* hashCode() 메서드가 항상 만족해야하는 2가지 조건
- 두 객체가 정확히 일치한다면, 그 둘의 hashCode도 정확히 같아야한다.
- hashCode는 객체의 값이 변하지 않는 이상 그 값이 절대 변화하면 안됌.
728x90
반응형