Числовые типы в Kotlin: представление, явные преобразования
Представление На платформе Java числа физически хранятся в виде примитивных типов JVM, если только нам не нужна ссылка на обнуляемое число (например, Int?) Или не используются дженерики. В последних случаях числа имеют обертку. Обратите внимание, что обертывание чисел не обязательно сохраняет идентичность: val a: Int = 10000 println(a === a) // Печатает 'true' val boxedA: Int? = a val anotherBoxedA: Int? = a println(boxedA === anotherBoxedA) // !!!Печатает 'false'!!! С другой стороны, это сохраняет равенство: val a: Int = 10000 println(a == a) // Печатает 'true' val boxedA: Int? = a val anotherBoxedA: Int? = a println(boxedA == anotherBoxedA) // Печатает 'true' Явные преобразования Из-за разных представлений меньшие типы не являются подтипами больших. Если бы они были, у нас были бы проблемы следующего вида: // Гипотетический код, на самом деле не компилируется: val a: Int? = 1 // обернутый Int (java.lang.Integer) val b: Long? = a /