동일성(identity) vs 동등성(equality)

홍성덕·2024년 7월 15일

동일성 (identity)

동일성은 두 변수가 참조하는 메모리 주소가 같은 것을 말한다. 같은 메모리 공간을 가리켜야 성립한다.

동등성 (equality)

동등성은 두 객체의 데이터가 같은 것을 말한다. 같은 메모리 공간을 가리키지 않아도 같은 값을 가지면 성립한다. 그래서 동일성이 성립한다는 것은 동등성도 성립한다는 것을 의미한다.

Java와 Kotlin의 동일성 동등성 비교

Java에서는

  • 동일성 확인을 위해 == 연산자를 사용한다.
  • 동등성 확인을 위해 eqauls() 메소드를 사용하는데 Object의 equals()는 내부적으로 == 연산자를 사용하여 동일성 확인만 한다. 그래서 동등성 확인을 위해 override 하여 메소드를 재정의해야 한다.

Kotlin에서는

  • 동일성 확인을 위해 === 연산자를 사용한다. Decompile 해보면 내부적으로 Java의 == 연산자를 사용한다는 것을 확인 할 수 있다.
  • 동등성 확인을 위해 == 연산자를 사용한다. 그런데 == 연산자를 사용한 Kt 파일을 Decompile 해보면 내부적으로 Java의 equals() 메소드를 사용하고 있다는 것을 알 수 있다.
    '그러면 동일성을 비교하는 건데?' 라는 생각을 할 수 있는데, 그래서 우리는 equals() 메소드를 자동으로 override 해주는 Kotlin의 data class를 사용하면 편하다.

참고자료

https://www.youtube.com/watch?v=OIoxURRTLic
https://velog.io/@conatuseus/Java%EC%99%80-Kotlin%EC%9D%98-%EB%8F%99%EB%93%B1%EC%84%B1%EA%B3%BC-%EB%8F%99%EC%9D%BC%EC%84%B1

profile
안드로이드 주니어 개발자

0개의 댓글