Сообщения

Сообщения за май, 2020

Числовые типы в 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 /

Литеральные константы чисел в Kotlin

Изображение
Существуют следующие виды литеральных констант для целочисленных значений: Десятичные: 123 Long обозначены заглавными буквами L: 123L Шестнадцатеричные: 0x0F Двоичные: 0b00001011 ПРИМЕЧАНИЕ. Восьмеричные литералы не поддерживаются. Kotlin также поддерживает обычные обозначения для чисел с плавающей точкой: По умолчанию Double: 123.5, 123.5e10 Float помечены f или F: 123.5f Подчеркивания в числовых литералах (с версии 1.1) Вы можете использовать подчеркивания, чтобы сделать числовые константы более читабельными: val oneMillion = 1_000_000 val creditCardNumber = 1234_5678_9012_3456L val socialSecurityNumber = 999_99_9999L val hexBytes = 0xFF_EC_DE_5E val bytes = 0b11010010_01101001_10010100_10010010 Читайте также: Числовые типы в Kotlin

Числовые типы в Kotlin

Изображение
В Kotlin все является объектом в том смысле, что мы можем вызывать функции-члены и свойства для любой переменной. Некоторые из типов могут иметь специальное внутреннее представление - например, числа, символы и логические значения могут быть представлены как примитивные значения во время выполнения - но для пользователя они выглядят как обычные классы. Kotlin предоставляет набор встроенных типов, которые представляют числа. Для целых чисел существует четыре типа с разными размерами и, следовательно, диапазонами значений. Тип Размер (битов) Минимальное значение Максимальное значение Byte 8 -128 127 Short 16 -32768 32767 Int 32 -2,147,483,648 (-2 exp 31) 2,147,483,647 ((2 exp 31) - 1) Long 64 -9,223,372,036,854,775,808 (-2 exp 63) 9,223,372,036,854,775,807 ((2 exp 63) - 1) Все переменные, инициализированные целочисленными значениями, не превышающими максимальное значение Int, имеют предполагаемый тип Int. Если начальное значение превышает это значение,