Дорогие читатели,
Помогите сделать документацию лучше!

К сожалению текст все еще содержит некоторое количество ошибок, и мы просим вас найти и исправить их. Если бы каждый из посетителей исправил хотя бы одну ошибку, то мы смогли бы довести до совершенства весь материал всего за один день.


Равенство

В 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.