less than 1 minute read

equals()

  • 객체의 내용물을 비교한다. 객체들을 논리적으로 비교했을 때 동등하다면 동등하다고 판단한다.
  • Object 클래스에 속한 메서드이므로 기본 자료형에 사용할 수 없다.
  • 클래스마다 오버라이딩하여 작동 방식이 다 다를 수 있으므로 ==보다 실행 속도가 느릴 수 있다.
  • 커스텀 객체의 동등성 비교, 컬렉션 등에 사용한다.

== 연산자

  • 객체의 참조값을 비교한다. 객체들의 메모리 위치가 동일하면 동등하다고 판단한다.
  • 자바가 기본적으로 제공하는 연산자이므로 기본 자료형에 사용할 수 있다.
    • 기본 자료형에 적용할 경우 값을 비교한다.
  • 언제나 동일한 방식(값 비교)으로 작동하므로 실행 속도가 빠르다.
  • 기본 자료형의 동등성 비교, null 확인 등에 사용한다.
  • 예외적인 경우
    • Enum은 언제나 singleton 패턴으로 상수를 생성하므로 == 연산자를 사용할 수 있다.
    • String의 경우 String Pool에 저장되었느냐 아니냐에 따라 결과가 달라질 수 있다.

➕ equals()를 오버라이딩할 때 지켜야 할 규칙

  • 재귀성: x.equals(x)가 true여야 한다.
  • 대칭성: x.equals(y)와 y.equals(x)의 결과가 동일해야 한다.
  • 이행성: x.equals(y)이고 y.equals(z)인 경우, x.equals(z)는 앞선 식들과 결과가 동일해야 한다.
  • 일관성: 여러 번 호출해도 그 결과가 동일해야 한다.
  • null 확인: x.equals(null)가 false여야 한다.

Categories:

Updated: