자바 equals 방법 상세 설명

2142 단어 질문
우선 equals 방법 은 object 류 의 방법 입 니 다. 모든 종 류 는 object 류 를 기본적으로 계승 합 니 다. object 류 는 모든 종류의 초 류 입 니 다.
두 대상 을 똑 같이 비교 하려 면 x. equals (y) 를 호출 해 야 합 니 다. 그러나 equals 방법 을 다시 쓰 지 않 으 면 기본적으로 object 류 의 equals 방법 을 사용 합 니 다.
public boolean equals(Object obj) {
    return (this == obj);
}

한편, object 에서 equals 방법 은 이렇게 정 의 됩 니 다. 인용 주소 가 같 으 면 두 대상 이 같다 는 것 을 증명 합 니 다. 이것 은 충분 하지 않 습 니 다.
String 의 equals 방법:
        object 의 equals 방법 을 다시 쓰 려 면 먼저 메모리 주 소 를 비교 한 다음 에 데이터 형식 을 비교 한 다음 에 문자열 의 길 이 를 비교 한 다음 에 모든 문자 의 비 교 를 합 니 다.
 
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String) anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                        return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

실제 개발 에서 두 개의 사용자 정의 대상 을 비교 하려 면 equals 방법의 재 작성 이 필요 하 다.
equals 방법 은 다음 과 같은 특성 을 따른다.
1. 자 반 성: 비어 있 지 않 은 인용 x, x. equals (x) 는 true 로 돌아 가 야 합 니 다.
2. 대칭 성, 모든 비공 식 인용 x, y 에 대해 x. equsla (y) = true 와 y. equals (x) = true 를 따라 야 합 니 다.
3. 전달 성: 모든 인용 x, y, z 에 대해 x. equsla (y) = true 라면 y. equals (x) = true
4. 일치 성: X 와 y 의 인용 이 변 하지 않 았 다 면 x. equsla (y) 를 반복 적 으로 호출 한 결 과 는 같 아야 합 니 다.
5. 임의의 비 공 인용 x, x. equals (null) 는 false 와 같 아야 합 니 다.
완전한 equals 사고방식: 예 를 들 어 x. equals (y)
1. 먼저 x = = y 를 검사 하고 주소 검 사 를 한다. 만약 같다 면 이것 은 빠 른 방식 이다.
2. y 가 null 인지 확인 하고 null 이면 false 로 돌아 갑 니 다.
3. x 와 y 가 같은 클래스 인지 확인 합 니 다. 이때 두 가지 검 측 방식 이 존재 합 니 다. 하위 클래스 의 부모 관계 가 존재 하지 않 으 면 마음대로 사용 할 수 있 습 니 다.
(1). instanceof 를 이용 하여 검사 합 니 다.
(2). getClass 를 이용 하여 검사 합 니 다 (하위 클래스 정의 동일 관계)
4. 그리고 필요 한 대비 속성 비교
만약 x. equals (y) 라면 x. hashCode 와 y. hashCode 는 반드시 같다.
equals 방법 을 다시 쓰 려 면 hashcode () 를 다시 정의 해 야 합 니 다.

좋은 웹페이지 즐겨찾기