자바에서 ==는 '객체의 주소값'을 기준으로 비교합니다. 반면에 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() 메소드를 사용해야 하며, 객체의 주소값이 같은지 비교해야 할 때는 == 연산자를 사용해야 합니다.
'java(자바)' 카테고리의 다른 글
[java(자바)] 싱글톤(singletone pattern) _디버깅의 눈물 (0) | 2023.02.25 |
---|---|
[java(자바)] 팩토리 패턴 _디버깅의 눈물 (0) | 2023.02.25 |
[java(자바)] 자바의 제어자 _디버깅의 눈물 (0) | 2023.02.25 |
[java(자바)] final 키워드 _디버깅의 눈물 (0) | 2023.02.24 |
[java(자바)] final, finally, finalize의 차이점? _디버깅의 눈물 (0) | 2023.02.24 |