java(자바)
[java(자바)] == vs equals() _디버깅의 눈물
디버깅의 눈물
2023. 2. 25. 12:48
자바에서 ==는 '객체의 주소값'을 기준으로 비교합니다. 반면에 equals()는 '객체 그 자체의 값'을 비교합니다.
다음은 ==와 equals() 메소드가 서로 다른 동작을 수행하는 예시입니다.
String s1 = new String("Hello");
String s2 = new String("Hello");
// == 연산자: 두 개의 객체의 주소값이 다름을 반환합니다.
boolean b1 = (s1 == s2);
// equals 메소드: 두 개의 객체의 문자열이 같음을 반환합니다.
boolean b2 = s1.equals(s2);
위 예시에서, s1과 s2는 각각 "Hello"라는 동일한 문자열을 가지고 있습니다. 하지만 new 연산자를 사용하여 각각 새로운 객체를 생성하였기 때문에, 두 객체의 주소값은 다릅니다.
따라서 == 연산자는 false를 반환합니다. 반면에 equals() 메소드는 두 객체의 문자열이 같음을 반환합니다. 즉, true를 반환합니다.
결과적으로, 객체의 값이 같은지 비교해야 할 때는 equals() 메소드를 사용해야 하며, 객체의 주소값이 같은지 비교해야 할 때는 == 연산자를 사용해야 합니다.