Sobes.tech
Junior
122
questionbank

В чем разница между двойным и тройным равно в Kotlin, и для чего было введено тройное равно?

Answer from AI

sobes.tech AI

  • Двойное равно (==): Сравнивает содержимое двух объектов (структурное равенство). Для примитивных типов сравнивается значение, а для объектов — результат вызова метода equals().

  • Тройное равно (===): Сравнивает ссылки на объекты в памяти (референциальное равенство). Возвращает true, если обе переменные ссылаются на один и тот же экземпляр объекта.

Тройное равно было введено для явного сравнения ссылок на объекты, что важно для определения, указывают ли две переменные на один и тот же объект в памяти, а не просто на объекты с одинаковым содержимым.

// пример сравнения
val string1 = "hello"
val string2 = "hello"
val string3 = String("hello".toCharArray()) // Новый объект

println(string1 == string2) // true (содержимое одинаковое)
println(string1 == string3) // true (содержимое одинаковое)
println(string1 === string2) // true (Kotlin оптимизирует строки - один и тот же объект для одинаковых литералов)
println(string1 === string3) // false (разные объекты в памяти)
println(string2 === string3) // false (разные объекты в памяти)