Зачем нужен метод equals если есть оператор ==

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

Ответ

Метод equals сравнивает содержимое объектов, а оператор ==ссылки на объекты.

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

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

Для примитивов (Int, Boolean и т. д.) == и equals работают одинаково, но для объектов — только equals даст корректный результат. Переопределяя equals, можно задать свою логику сравнения.