Equality
Kotlin에는 두가지 동등성이 있다
- 참조 평등 (두 개의 참조가 같은 객체를 가리킴)
- 구조 평등 (
equals()에 대한 검사)
참조 평등
=== 연산으로 검사된다. (반대는 !==). a === b는 a와 b가 같은 객체를 가리키는 경우에만 true
구조 평등
구조 평등은 == 연산으로 검사된다. (반대는 !=). 규약에따라 a == b 는 다음과 같이 변환된다.
a?.equals(b) ?: (b === null)
a 가 null 이 아닌 경우 equals(Any?) 함수를 호출하고, 그렇지 않으면 b가 null 과 동일한지 검사한다.
null 을 직접 비교할때 코드 최적화할 필요없다. a == null 을 자동으로 a === null 로 변환된다.