문자열 비교하기 : ==
vs equals()
자바에서 문자열을 비교하는 방법에는 ==
연산자와 equals()
메서드가 주로 사용됩니다. 하지만 이 두 가지 비교 방법은 내부적으로 다른 동작을 수행하므로 이에 대해 알아보겠습니다.
==
연산자
==
연산자는 두 개의 변수가 메모리에 저장된 값이 동일한지 비교합니다. 문자열을 ==
연산자로 비교할 경우, 문자열이 동일한 객체인지를 확인합니다.
예를 들어, 다음과 같은 코드를 고려해 봅시다:
String str1 = "Hello";
String str2 = "Hello";
String str3 = new String("Hello");
System.out.println(str1 == str2); // true
System.out.println(str1 == str3); // false
위의 예시에서, str1
과 str2
변수는 같은 문자열 리터럴을 가리키고 있으므로 ==
비교 시 true를 반환합니다. 그러나 str3
은 새로운 String
객체를 생성했기 때문에 다른 주소를 가지고 있으므로 ==
비교 시 false를 반환합니다.
equals()
메서드
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
위의 예시에서, equals()
메서드를 사용하여 문자열을 비교하면 내용이 동일한지 여부에 따라 true 또는 false를 반환합니다. 즉, str1.equals(str2)
는 true를 반환하며, str1.equals(str3)
도 true를 반환합니다.
결론
==
연산자는 메모리 상의 값을 비교하는 반면,equals()
메서드는 두 문자열의 내용을 비교합니다.==
연산자는 문자열 리터럴이 동일한 객체인지를 확인하며,new
키워드로 생성한 문자열은 다른 주소를 가지므로 false를 반환합니다.equals()
메서드는 문자열의 내용이 같은지를 비교하여 true 또는 false를 반환합니다.
따라서, 일반적으로 문자열을 비교할 때는 equals()
메서드를 사용하는 것이 안전하며, ==
연산자는 주소 비교에 사용되어야 합니다.
댓글