Java에서 ==
연산자와 equals()
메서드의 차이점에 대해 알아봅시다.
==
연산자:==
는 주로 기본 데이터 유형 (예: int, char, double 등)을 비교하는 데 사용되지만, 객체에 대해 사용될 때는 두 객체의 참조(즉, 메모리 주소)가 동일한지 확인합니다. 따라서, 두 객체가 동일한 객체를 참조하고 있다면 true
를 반환하고, 그렇지 않다면 false
를 반환합니다.
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // 이는 false를 출력합니다.
equals()
메서드:equals()
메서드는 두 객체의 내용이 동일한지 비교합니다. 즉, 두 객체가 동일한 상태를 가지고 있는지 확인합니다. 하지만, equals()
메서드는 Object 클래스에서 상속받은 메서드로, 기본적으로 ==
연산자와 동일한 기능을 합니다. 그러므로 이 메서드를 원하는 방식으로 작동하게 하려면, 해당 메서드를 재정의(오버라이드)해야 합니다.
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // 이는 true를 출력합니다.