동일성은 두 변수가 참조하는 메모리 주소가 같은 것을 말한다. 같은 메모리 공간을 가리켜야 성립한다.
동등성은 두 객체의 데이터가 같은 것을 말한다. 같은 메모리 공간을 가리키지 않아도 같은 값을 가지면 성립한다. 그래서 동일성이 성립한다는 것은 동등성도 성립한다는 것을 의미한다.
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