본문 바로가기
java

[Java] Object와 String 객체의 equals() 비교

by hs_seo 2017. 3. 22.

자바의 기본 객체 함수 중 하나인 equal() 함수는 객체의 값을 비교하는 연산자이다. 


== 연산자는 객체의 주소를 비교하고, equals()는 객체의 값을 비교하는 연산자이다. 

보통 equals()는 문자열(String)의 값을 비교하는데 많이 사용한다. 


Object의 equals() 함수는 다음과 같다. 

즉, 객체의 주소값을 비교하여 반환한다. 


    public boolean equals(Object obj) {

        return (this == obj);

    }



하지만 String 객체의 equals() 함수는 다음과 같다. 

문자열의 char 를 하나하나 비교하여 동일하면 true, 다르면 false 를 반환한다. 


    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;

    }


String 의 경우 같은 문자라도 주소가 다를 수 있지만, 이렇게 equals() 함수를 오버라이드하여 재구성했기 때문에 

동일한 문자열의 확인이 가능하다. 


반응형