Сообщения

Сообщения за июнь, 2020

Символы в Kotlin

Изображение
Символы в Kotlin представлены типом Char . Их нельзя трактовать напрямую как числа fun check(c: Char) { if (c == 1) { // ОШИБКА: несовместимые типы // ... } } Символьные литералы идут в одинарных кавычках: '1'. Специальные символы могут быть экранированы с помощью обратной косой черты. Поддерживаются следующие escape-последовательности: \t, \b, \n, \r, \', \", \\ и \$. Чтобы кодировать любой другой символ, используйте синтаксис escape-последовательности Unicode: '\uFF00'. Мы можем явно преобразовать символ в Int число: fun decimalDigitValue(c: Char): Int { if (c !in '0'..'9') throw IllegalArgumentException("Out of range") return c.toInt() - '0'.toInt() // Явные преобразования в числа } Как и числа, символы помещаются в контейнер, когда требуется обнуляемая ссылка. Идентичность не сохраняется в результате операции помещения в контейнер. Читайте также: Операции с числовыми типам

Сравнение чисел с плавающей точкой в Kotlin

Изображение
Операции над числами с плавающей запятой, обсуждаемые в этом посте: Проверка на равенство: a == b и a != b Операторы сравнения: a < b, a > b, a <= b, a >= b Создание экземпляра диапазона и проверка диапазона: a..b, x in a..b, x !in a..b Когда операнды a и b статически известны как Float или Double или их обнуляемые аналоги (тип объявляется или выводится или является результатом умного приведения), операции над числами и диапазоном, который они формируют, соответствуют IEEE 754 стандарту для арифметики с плавающей точкой. Однако для поддержки общих вариантов использования и обеспечения общего упорядочения, когда операнды не статически типизированы как числа с плавающей запятой (например, Any, Comparable<...>, параметр типа), в операциях используются реализации equals и compareTo для Float и Double, который не соответствует стандарту, так что: NaN считается равным себе NaN считается больше, чем любой другой элемент, включая POSITIVE_INFINITY -0.0 считается ме

Операции с числовыми типами в Kotlin

Изображение
Kotlin поддерживает стандартный набор арифметических операций над числами (+ - * / %), которые объявлены как члены соответствующих классов (но компилятор оптимизирует вызовы до соответствующих инструкций). Деление целых чисел Обратите внимание, что деление между целыми числами всегда возвращает целое число. Любая дробная часть отбрасывается. Например: val x = 5 / 2 //println(x == 2.5) // ERROR: Operator '==' cannot be applied to 'Int' and 'Double' println(x == 2) Это верно для деления между любыми двумя целочисленными типами. val x = 5L / 2 println(x == 2L) Чтобы вернуть тип с плавающей точкой, явно преобразуйте один из аргументов в тип с плавающей точкой. val x = 5 / 2.toDouble() println(x == 2.5) Побитовые операции Что касается побитовых операций, то для них нет специальных символов, а только именованные функции, которые можно вызывать в инфиксной форме, например: val x = (1 shl 2) and 0x000FF000 Вот полный список побитовых опера