equals() - 동일성과 동등성

SungMin·2026년 5월 23일

자바 심화 정리

목록 보기
6/34

Object에서는 동등성 비교를 위한 equals() 메서드를 지원한다.

자바에서는 같다라는 표현을 두가지로 나타낼 수 있다.

  • 동일성(Identity): == 연산자를 사용하여 두 객체의 참조값을 비교
  • 동등성(Equality): equals() 메서드를 사용하여 두 객체가 동등한지 비교

동일성은 물리적으로 메모리에 같은 인스턴스 참조값을 확인하고, 동등성은 논리적으로 같은지를 확인한다.


package lang.object.equals;

public class EqualsMainV1 {
    public static void main(String[] args) {
        UserV1 user1 = new UserV1("id-100");
        UserV1 user2 = new UserV1("id-100");

        System.out.println("identity = " + (user1 == user2));
        System.out.println("equality = " + (user1.equals(user2)));
    }
}
public boolean equals(Object obj) {
      return (this == obj);
}

Object 클래스의 equals() 메서드는 기본적으로 == 연산자를 사용한 동일성 비교를 수행한다.

동등성이라는 개념은 클래스마다 다르게 받아들일 수 있다. 각 클래스마다 생각하는 동등성이 다르기 때문이다.
따라서, 동등성 비교를 하고 싶다면 equals() 메서드를 재정의 해야한다.
동등성 비교를 위해 equals()를 오버라이딩하면 논리적으로 같은 객체를 비교할 수 있다.
그렇지 않으면 동일성 비교를 기본적으로 제공한다.


[정리]

  • == 연산자는 두 객체의 참조값이 같은지 비교한다.
  • equals()는 두 객체가 논리적으로 같은지 비교한다.
  • Object의 기본 equals()는 동일성 비교를 수행한다.
  • 동등성 비교를 위해서는 equals()를 오버라이딩해야 한다.
profile
오늘도 한 걸음씩 나아가

0개의 댓글