В чем разница между оператором == и ===

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

Ответ

Разница между == и === в Kotlin (и Java) заключается в сравнении значений и ссылок:

  1. == (структурное равенство) – сравнивает значения объектов, используя метод equals().
    val a = "Hello"
    val b = "Hello"
    println(a == b) // true (значения одинаковы)
  1. === (референсное равенство) – проверяет, ссылаются ли переменные на один и тот же объект в памяти.
    val list1 = listOf(1, 2)
    val list2 = listOf(1, 2)
    println(list1 === list2) // false (разные объекты)

Для примитивов (Int, Boolean и т. д.) == и === работают одинаково, так как они сравниваются по значению.