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 (разные объекты в памяти)