728x90
개요
객체를 비교할 때 "동일성"과 "동등성"이라는 개념은 개발자에게 매우 중요한 주제입니다. 본 글에서는 동일성과 동등성에 대해서 자세히 알아보고, 두 개의 차이점에 대해서 정리하고자 합니다.
동일성 (Identity)
동일성은 두 객체의 참조가 같은지를 비교합니다. 즉, 두 객체가 메모리에서 동일한 위치를 가리키는지 확인합니다.
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1 == str2); // false (다른 객체를 참조)
System.out.println(str1 == str1); // true (같은 객체를 참조)
- 비교 방법: == 연산자
- 사용 사례: 객체가 완전히 같은 인스턴스인지 확인할 때.
동등성 (Equality)
동등성은 객체의 "값"이 같은지를 비교합니다. equals() 메서드를 재정의하여 원하는 비교 방식을 구현할 수 있습니다.
String str1 = new String("Hello");
String str2 = new String("Hello");
System.out.println(str1.equals(str2)); // true (값이 같음)
- 비교 방법: equals() 메서드
- 사용 사례: 객체의 논리적 내용이 동일한지 확인할 때.
동일성 (Identity)과 동등성 (Equality) 차이 알아보기
public class Main {
public static void main(String[] args) {
// 동일한 문자열 값이지만 다른 객체
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는 동일성 비교로, 두 객체가 같은 메모리 위치(주소)를 가리키는지 확인합니다.
- new String("Hello")로 생성된 두 문자열은 메모리에서
다른 주소를 가리키므로 false가 출력됩니다.
- new String("Hello")로 생성된 두 문자열은 메모리에서
- str1.equals(str2)는 동등성 비교로, 두 객체의 값이 같은지를 확인합니다.
- str1과 str2 모두 "Hello"라는 값을 가지고 있기 때문에 true가 출력됩니다.
- 동일성은 객체의 참조 비교, 동등성은 객체의 내용 비교입니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2025.01.15 - 아스키 코드와 유니 코드의 차이점 알아보기 (0) | 2025.01.15 |
---|---|
[TIL, 일일 회고] 2025.01.14 - 읽기 전용 볼륨이란? :도커에서 데이터 수정 방지 설정하기 (0) | 2025.01.14 |
[TIL, 일일 회고] 2025.01.12 - ${PWD}와 $(pwd) 차이점 알아보기 (0) | 2025.01.12 |
[TIL, 일일 회고] 2025.01.11 - Docker에서 ${PWD}를 활용한 경로 단순화 방법 (0) | 2025.01.11 |
[TIL, 일일 회고] 2025.01.10 - Docker 볼륨의 우선순위: 익명 볼륨이 특정 경로를 보호할 수 있는 이유 (0) | 2025.01.10 |