목차

‘==’ 와 ‘equals()’
자바에서는 데이터의 비교에는 == 연산자를 주로 이용한다. 하지만 String 문자열의 값을 비교할때는 == 보다 equals() 메소드를 쓰는데 왜 그럴까?
== 연산자는 객체의 값(주소)를 비교하는것이고,
equals()는 문자열 자체를 비교하는 것이다.
‘==’ 연산자
‘==’ 연산자는 두 문자열의 메모리 주소를 비교한다. 즉, 두 문자열이 동일한 메모리 주소를 가리키는지를 확인합니다. 이 연산자는 문자열의 내용이 아닌 참조를 비교하므로 예상한 결과가 나오지 않을 수 있습니다.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
boolean result1 = (str1 == str2); // true (같은 리터럴 문자열은 동일한 주소를 가리킴)
boolean result2 = (str1 == str3); // false (새로운 객체로 생성되었으므로 다른 주소를 가리킴)
‘equals()’ 메서드
‘equals()’ 메서드는 두 문자열의 내용(content)을 비교한다. 문자열의 실제 내용이 같은지를 확인하기 때문에 보다 정확한 결과를 제공합니다.
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
boolean result1 = str1.equals(str2); // true (내용이 같음)
boolean result2 = str1.equals(str3); // true (내용이 같음)
결론
👉
문자열을 비교할때는 equals()메서드를 사용하자. == 연산자는 참조 비교에 사용되기때문에 문자열의 실제 내용을 비교하고싶다면 equals()를 사용하는게 적합하다.