IT
동등하다?(동등성) 동일하다?(동일성) 개념 정리
hoonylab
2025. 4. 17. 14:05
728x90
반응형
✅ 동등성과 동일성의 차이 (Equality vs Identity)
Java를 포함한 객체지향 프로그래밍 언어에서는 동등성(equality)과 동일성(identity)을 구분하는 것이 매우 중요합니다. 겉보기에는 같아 보여도 내부적으로는 완전히 다른 의미를 가지기 때문이죠.
🧠 1. 용어 정리
구분 | 설명 |
---|---|
동일성 (Identity) | 두 객체가 완전히 같은 객체인지 확인. 즉, 메모리 주소가 같은지를 비교. Java에서는 == 연산자를 사용. |
동등성 (Equality) | 두 객체의 내용이 같은지를 비교. Java에서는 equals() 메서드를 오버라이딩하여 비교. |
🔍 2. 자바 코드 예제로 이해하기
public class Person {
private String name;
public Person(String name) {
this.name = name;
}
// equals 메서드 오버라이딩
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (obj == null || getClass() != obj.getClass()) return false;
Person person = (Person) obj;
return this.name.equals(person.name);
}
public static void main(String[] args) {
Person p1 = new Person("Alice");
Person p2 = new Person("Alice");
Person p3 = p1;
System.out.println("p1 == p2: " + (p1 == p2)); // false (동일성)
System.out.println("p1.equals(p2): " + p1.equals(p2)); // true (동등성)
System.out.println("p1 == p3: " + (p1 == p3)); // true (동일성)
}
}
📌 3. 요약 정리
==
→ 동일성 확인 (메모리 주소 비교)equals()
→ 동등성 확인 (내용 비교)- 커스텀 클래스에서는
equals()
메서드를 오버라이딩해야 의미 있는 동등성 비교가 가능
728x90
반응형