type | layout | category | title | url |
---|---|---|---|---|
doc |
reference |
Other |
Равенство |
В Kotlin есть два типа равенства:
- Равенство ссылок (две ссылки указывают на один и тот же объект)
- Равенство структур (проверка через
equals()
)
Равенство ссылок проверяется с помощью оператора ===
(и его отрицания !==
). Выражение a === b
является истиной тогда и только тогда, когда a
и b
указывают на один и тот же объект.
Структурное равенство проверяется оператором ==
(и его отрицанием !=
). Условно, выражение a == b
транслируется в:
a?.equals(b) ?: (b === null)
Т.е. если a
не null
, вызывается функция equals(Any?)
, иначе (т.е. если a
указывает на null
) b
ссылочно сравнивается с null
.
Заметьте, что в явном сравнении с null
для оптимизации нет смысла: a == null
будет автоматически транслироваться в a === null
.