Выбор ответа Junior Основы языка спрашивают часто обновлено

Разница между == и === в Kotlin

Вопрос

Что означает a == b в Kotlin для объектов?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Вызов a.equals(b) с безопасной обработкой null. == в Kotlin это структурное равенство: компилируется примерно в a?.equals(b) ?: (b === null), поэтому не падает на null.

Варианты ответа

  1. Сравнение ссылок, как == в Java
  2. Сравнение хеш-кодов
  3. Вызов a.equals(b) с безопасной обработкой nullправильный ответ
  4. Сравнение только для строк и чисел, для остальных ошибка компиляции

Разбор

== в Kotlin это структурное равенство: компилируется примерно в a?.equals(b) ?: (b === null), поэтому не падает на null. Ссылочное сравнение пишется ===. Хеш-коды при == не сравниваются (их использует HashMap). Для любых типов == компилируется, хотя для заведомо несовместимых типов компилятор выдаст ошибку «оператор не применим».

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме