ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 동등하다?(동등성) 동일하다?(동일성) 개념 정리
    IT 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
    반응형

    댓글

Designed by Tistory.