본문 바로가기
카테고리 없음

문자열 비교하기 == , equals() 의 차이점

by kangs' tong 2023. 8. 28.

문자열 비교하기 : == 연산자

== 연산자는 두 문자열이 동일한 객체를 참조하는지 비교합니다. 즉, 두 문자열이 같은 메모리 주소를 참조하는 경우에만 true를 반환합니다.

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

위 예제에서, str1str2는 둘 다 "Hello"라는 값을 가지고 있지만 같은 객체를 참조하고 있기 때문에 true를 반환합니다. str3는 새로운 객체를 생성하여 "Hello"라는 값을 가지고 있으므로 false를 반환합니다.

문자열 비교하기 : equals() 메서드

equals() 메서드는 두 문자열의 실제 내용이 같은지 비교합니다. 즉, 두 문자열의 문자들이 동일한지를 비교하여 결과를 반환합니다.

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true

위 예제에서, str1str2equals() 메서드를 사용하여 비교하였을 때 동일한 문자열을 가지므로 true를 반환합니다. str3 역시 equals() 메서드를 사용하여 비교하였을 때 동일한 문자열을 가지므로 true를 반환합니다.

==equals()의 차이점

==객체의 참조를 비교합니다. 즉, 두 개의 문자열 객체가 동일한 메모리 주소를 참조하는 경우에만 true를 반환합니다. 이에 반해, equals()객체의 내용을 비교합니다. 즉, 실제로 문자열의 문자들이 동일한 경우에 true를 반환합니다.

String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");

System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false

System.out.println(str1.equals(str2)); // true
System.out.println(str1.equals(str3)); // true

이와 같은 차이로 인해, ==는 문자열의 내용이 같아도 다른 객체를 참조하는 경우에는 false를 반환하는 반면, equals()는 문자열의 내용이 같으면 true를 반환합니다.

마무리

==equals()는 문자열 비교를 수행하는 데 사용되는 연산자와 메서드입니다. ==는 객체의 참조를 비교하고, equals()는 객체의 내용을 비교합니다. 따라서, 문자열 비교에는 equals() 메서드를 사용하는 것이 더 적합합니다.

댓글