로마
- 동일성은 두 개의 객체가 존재할 때 두 객체가 완전히 같은 것을 의미합니다. 즉 두 객체가 같은 주소를 참조하고 있는 것 입니다.
- 동등성은 두 개의 객체가 존재할 때 두 객체가 가지고 있는 내용(데이터)이 같은 것을 의미합니다. 두 객체가 다른 주소값을 가지더라도 같은 데이터를 가지고 있으면 두 객체는 동등하다고 할 수 있습니다.
- 동일할 경우 동등하다고 할 수 있지만 동등할 경우 무조건 동일하지는 않습니다.
- Java 에서는 보통
equals
메서드로 동등성을 비교하고==
으로 동일성을 비교합니다. 하지만 여기서equals
메서드가 항상 동등성을 비교하는 것은 아닌데, 커스텀 객체에서 이를 재정의 해주지 않는다면 기본적으로Object
객체에서 정의된equals
가 시행되고 동일성 검증을 시행하게 된다. - Kotlin 에서는 자바와 달리
==
연산 시equals
가 시행되어 동등성 비교를 하게 되고===
연산 시 동일성 비교를 하게 되고 같은 주소값을 가진 객체인지 비교하게 된다.