В официальной ссылке Kotlin https://kotlinlang.org/docs/reference/basic-types.html#numbers я читал, что:
Обратите внимание, что бокс чисел не обязательно сохраняет идентичность
и пример, который показывает, какэто может быть представлено:
val a: Int = 10000
print(a === a) // Prints 'true'
val boxedA: Int? = a
val anotherBoxedA: Int? = a
print(boxedA === anotherBoxedA) // !!!Prints 'false'!!!
После некоторого спонтанного тестирования я понял, что это работает как следует для чисел байта (<128): </p>
val a = 127
val boxedA: Int? = a
val anotherBoxedA: Int? = a
print(boxedA === anotherBoxedA) //!!!Prints 'true'!!!
Также в той же ссылке https://kotlinlang.org/docs/reference/equality.html Я обнаружил, что:
Для значений, которые представлены как примитивные типы во время выполнения (например, Int), проверка равенства === эквивалентна проверке == =
Но это не объясняет этот случай как для:
val a = 128
val boxedA: Int? = a
val anotherBoxedA: Int? = a
print(boxedA === anotherBoxedA) //!!!Prints 'false'!!!
Поэтому я пытаюсь понять, почему ссылочное равенство "===" показывает "false" для чисел> =128 и «истина» для <128? </p>