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

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

by nono22 2023. 11. 30.

문자열 비교하기 : == 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

위의 예시에서, str1str2 변수는 같은 문자열 리터럴을 가리키고 있으므로 == 비교 시 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() 메서드를 사용하는 것이 안전하며, == 연산자는 주소 비교에 사용되어야 합니다.

댓글