Junior
248
Quelle est la différence entre le double égal et le triple égal en Kotlin, et pourquoi le triple égal a-t-il été introduit?
Réponse de l'IA
sobes.tech IA
-
Двойное равно (
==): Сравнивает содержимое двух объектов (структурное равенство). Для примитивных типов сравнивается значение, а для объектов — результат вызова метода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 (разные объекты в памяти)