В чем разница между сравнением в Java и Kotlin

«В чем разница между сравнением в Java и Kotlin» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Java == сравнивает ссылки, а equals() - содержимое объектов. В Kotlin == вызывает equals() под капотом, сравнивая содержимое, а === работает как == в Java, сравнивая ссылки.

Пример:

val str1 = "Hello"
val str2 = String("Hello".toCharArray())

println(str1 == str2)  // true (сравнение содержимого)
println(str1 === str2) // false (сравнение ссылок)

Для примитивов в Kotlin == и === работают одинаково, так как они хранятся по значению.