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
로 변환된다.