equals()와 == 차이점
Java에서 `==` 연산자와 `equals()` 메소드는 객체 비교에 사용되는 두 가지 다른 방법입니다. 이 두 가지 방법 사이의 주요 차이점은 다음과 같습니다:
1. `==` 연산자:
- `==` 연산자는 객체의 참조(메모리 주소)를 비교합니다.
- 두 객체가 정확히 동일한 메모리 위치를 가리키는 경우에만 `true`를 반환합니다.
- `==` 연산자는 기본 데이터 유형에 대해서는 값 비교를 수행하고, 참조 데이터 유형(객체)에 대해서는 참조 주소 비교를 수행합니다.
2. `equals()` 메소드:
- `equals()` 메소드는 객체의 내용(데이터)을 비교합니다.
- 기본적으로 Java의 `Object` 클래스에서 상속되는 `equals()` 메소드는 `==` 연산자와 동일하게 동작하여 객체의 참조를 비교합니다.
- 하지만 많은 Java 클래스(예: `String`, `Integer`, `Double` 등)는 `equals()` 메소드를 오버라이드하여 객체의 내용을 비교하도록 수정했습니다.
예시:
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // false (참조 주소 비교)
System.out.println(str1.equals(str2)); // true (내용 비교)
위의 예시에서, `str1`과 `str2`는 서로 다른 메모리 위치를 가리키지만 `equals()` 메소드를 사용하여 내용을 비교하면 `true`를 반환합니다.
따라서, 일반적으로 객체 내용을 비교하려면 `equals()` 메소드를 사용하고, 객체 참조를 비교하려면 `==` 연산자를 사용해야 합니다. 그러나 주의해야 할 점은 `equals()` 메소드를 오버라이드하지 않은 경우에는 기본적으로 `==` 연산자와 동일한 동작을 수행한다는 것입니다.
'게으른 개발자의 끄적거림' 카테고리의 다른 글
CSS div, span차이점 (1) | 2023.10.17 |
---|---|
구글 서치콘솔 등록하는 방법 (0) | 2023.10.16 |
IP 주소에 담긴 정보, 의미 (1) | 2023.10.11 |
CSS 선택자 :first-child와 :first 차이점 (0) | 2023.10.10 |
JavaScript onclick 여러개 이벤트 (0) | 2023.10.06 |