[Java] Object와 String 객체의 equals() 비교
자바의 기본 객체 함수 중 하나인 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() 함수를 오버라이드하여 재구성했기 때문에
동일한 문자열의 확인이 가능하다.