Kotlin операции с числами

Урок 2: Арифметические операции в языке Kotlin

Классические операции, такие как сложение, вычитание, умножение, деление – в языке программирования Kotlin работают по тем же законам, что и в математике и используются точно такие же операторы. Перед тем, как начнем практиковаться, произведем небольшой рефакторинг и наведем в проекте порядок. Чтобы материалы не путались, я буду создавать отдельный файл под каждый урок. Сначала переименуем файл первого урока. Жмем на него ПКМ → Refactor → Rename. Пусть название будет, например, lesson_1. Переименование через рефактор в проекте следует использовать по возможности всегда, вне зависимости от того, что вы переименовываете (файл, класс, переменную или метод). Если вы захотите переименовать переменную, которая используется в разных местах проекта, таким образом она изменится везде.

Чтобы создать новый файл жмем на папку kotlin ПКМ → New → Kotlin Class/File. Назовем соответственно lesson_2. Пишем новую точку входа в приложение с помощью стандартной функции main(). Чтобы код внутри фигурных скобок стал исполняемым. Отлично, мы готовы к практике.

Инициализация числом и выражением

Математические операторы выглядят точно также, поэтому долго не будем останавливаться на базовых операциях. Давайте объявим несколько переменных, с которыми будем сейчас работать.

val a = 5 val b = 7 println(a + b)

Вызовем метод println() и отправим в него выражение. Например, сумму этих чисел и распечатаем. Также результат можно записать в отдельную переменную, например, назовем ее sum и распечатаем результат.

val a = 5 val b = 7 val sum = a + b println(sum)

В обоих случаях в консоли отобразится результат сложения двух чисел. Можете поэкспериментировать с более сложными выражениями – разными знаками и дополнительными скобками.

Смотрите, проинициализировать переменную можно как обычным числом, так и неким выражением сразу. В последнем случае результат сначала будет посчитан, а затем присвоен переменной sum.

Еще несколько нюансов, которые также стоит записать в свой конспект, про объявление и инициализацию переменных любого типа. Нельзя просто так взять и объявить переменную с одним только названием, не проинициализировав ее или не указав тип. Например, val c. Среда разработки подсветит ошибку, а программа упадет на этапе компиляции. Это произойдет, потому что компилятору непонятно, в итоге какого типа будет переменная.

Поэтому в такой ситуации можно пойти двумя путями:

  • при объявлении переменной сразу проинициализировать ее, тогда тип присвоится автоматически;
  • при объявлении переменной принудительно указывать ее тип – например, val c: Int.

Деление целых и дробных чисел

Естественно, в метод println() можно отправлять данные не только через переменные, а напрямую любые нетипизированные выражения. Например, разделим два числа:

Вывод в консоль

Читайте также:  pop

Почему так, если точно известно, что результатом будет дробное число? Дело в той же типизации. Мы передали в функцию println() целые числа, поэтому результат вычисления тоже будет распечатан с сохранением типа. В котлине при делении целых чисел, дробная часть отбрасывается. Давайте для наглядности покажу, как будет отличаться вывод одних и тех же чисел, явно указав разные типы.

Сначала еще раз присвоим два наших целых числа с явным указанием целочисленного типа. Запишем выражения деления в консоль. Далее по такому же принципу я распишу деление двух чисел типа Float и двух чисел типа Double. Также еще раз вспомним разницу в их объявлении.

val intNum1: Int = 10 val intNum2: Int = 3 println(intNum1 / intNum2) // 3 val floatNum1: Float = 10f val floatNum2: Float = 3f println(floatNum1 / floatNum2) // 3.3333333 val doubleNum1: Double = 10.0 val doubleNum2: Double = 3.0 println(doubleNum1 / doubleNum2) // 3.3333333333333335

Помним, что для инициализации дробного числа типа Float добавляем f в конце значения. Для инициализации дробного числа типа Double просто делаем его дробным, добавив точку. Теперь распечатываем значения в консоль. Разница очевидна. Напомню, double и float отличаются только максимально возможным объемом хранимого числа. Итог: чтобы получить дробное число, нужно позаботиться об его явной типизации при объявлении.

Остаток от деления

В Kotlin есть оператор, который позволяет получить остаток от деления на число. Как мы понимаем, остаток от деления при делении 10 на 3 будет 1. Чтобы получить это значение в коде, используется знак %.

Вывод в консоль

Самый популярный метод применения этого оператора – это определения четности или нечетности целого числа. Если остаток от деления на 2 – ноль, значит это число четное.

Как в Kotlin формируется конечный тип переменной

Что если в выражении встретились два разных типа? Например Int и Double. Какой тип сохранится в качестве результата? Рассмотрим на примере.

Для вычислений будем использовать наши же переменные, которые мы проинициализировали выше.

val c = intNum1 + floatNum1 println(c::class.simpleName) // float val d = intNum1 + floatNum1 + doubleNum1 println(d::class.simpleName) // double

Первое. Если в выражении присутствует одновременно целочисленный и дробный типы. Результат вычислений будет всегда дробный.

Второе. Если среди вычислений будут одновременно типы Float и Double – в этом случае результат вычислений будет иметь тип Double. За счет преимущества по объему вмещаемой памяти (8 байт у Double против 4 у Float).

Кстати, чтобы в коде распечатать тип переменной, нужно дописать оператор “двойное двоеточие” и ключевое слово class. Оператор :: является ссылкой на метод или класс. Если вам нужна ссылка на Kotlin класс, то достаточно написать ::class . Если нужно просто получить имя класса, то в конце необходимо добавить .simpleName . Таким образом мы обратимся к полю имени класса.

Читайте также:  Адаптивность html что это

Так мы вызвали метод, который вернул нам (в место вызова) имя класса, его описание можно прочитать в документации стандартной библиотеки. Для этого нужно кликнуть на метод с зажатой клавишей command или ctrl. Сейчас этот момент может быть непонятен, ничего страшного, к классам и объектам мы вернемся позже и все подробно разберем. Пока это демонстрация, как читать оригинальные описания работы разных стандартных методов.

Присваивание через +=, инкремент, декремент в Котлин

Теперь немного поговорим об укороченных записях некоторых операций. Очень распространенные конструкции. Представим, мы делаем какой-нибудь счетчик, неважно как, но суть в том, что нам надо каждую секунду добавлять к числу единицу.

Объявим изменяемую переменную с названием, например, counter (счетчик) и присвоим ей 0. Прибавлять единицу можно несколькими способами:

Все эти операторы делают одно и то же. Точно также можно отнимать единицу, используя оператор вычитания с присваиванием и декремента (два минуса).

Инкремент и декремент тут показаны в постфиксной форме. Также их можно применять и в префиксной форме, поставив плюсы перед переменной.

Такие тонкие настройки могут понадобиться, когда, например, надо сначала увеличить значение на единицу, а затем использовать и наоборот.

Операторы сравнения

Наконец пройдемся по операторам сравнения. Мы проинициализировали ранее две переменные a и b. 5 и 7. Используем их. В методе println запишем различные варианты сравнения двух целых чисел и сразу распечатаем результаты.

Вывод в консоль

Источник

Арифметические операции в Kotlin

Проще всего разобраться с операциями можно с помощью арифметики. Операция сложения берет два числа и преобразует их в сумму. Операция вычитания берет два числа и преобразует их в разность. Во всех приложениях вы найдете простую арифметику — от подсчета количества лайков до расчета правильного размера и положения кнопки или окна — числа и правда везде!

В этом разделе вы узнаете о различных арифметических операциях, которые предлагает Kotlin. В следующих уроках мы разберем операции для типов, отличных от чисел.

Простые математические операции в Kotlin

Все операции в Kotlin используют символ, известный как оператор, для указания типа осуществляемой операции. Рассмотрим четыре арифметические операции, с которым вы знакомы с первого класса: сложение, вычитание, умножение и деление.

Для данных операций в Kotlin используются следующие операторы:

Данные операторы используются следующим образом:

Каждая из данных строчек является выражением. У выражения есть значение. В данных случаях у всех четырех выражений одинаковые значения: 8 . Вы набираете код для выполнения операций по аналогии с написанием примеров на бумаге.

Читайте также:  Среда разработки приложений javascript

В IDE вы увидите значения выражений в выводе на консоли с помощью команды println():

программа на kotlin

Если хотите, можете убрать пробелы возле оператора:

Разницы нет. Вы можете даже использовать варианты с пробелами и без вперемежку. К примеру:

Однако зачастую удобнее читать выражения с пробелами возле оператора.

Десятичные числа в Kotlin

Во всех операциях выше использовались целые числа, которые относятся к типу integer. Однако не все числа целые.

Рассмотрим следующий пример:

Результатом данной операции будет число 3 . Это потому что, если вы используете в выражении только целые числа, Kotlin сделает результат также целым числом. В данном случае результат округляется до ближайшего целого числа.

Вы можете указать Kotlin, что нужно использовать десятичные числа, записав их в следующей форме:

На этот раз результатом будет число 3.142857142857143 .

Операция для получения остатка % в Kotlin

Четыре операции, с которыми мы работали до сих пор, легко понять, потому что вы с ними хорошо знакомы в жизни. В Kotlin также есть более сложные операции, которые вы можете использовать. Это стандартные математические операции, только менее распространенные. Рассмотрим их.

Сначала разберем операцию остатка, или операцию по модулю. При делении числителя на знаменатель — результатом будет целое число, а также остаток. Этот остаток и является результатом операции по модулю. Например, 10 по модулю 3 равно 1, потому что 3 трижды переходит в 10 с остатком 1.

В Kotlin оператором остатка является символ % , который используется следующим образом:

В данном случае результатом будет число 8, которое является остатком при делении 28 на 10. Если вам нужно посчитать то же самое, используя десятичные числа, это можно сделать следующим образом:

Результат идентичен % без десятичных чисел, что можно увидеть на выводе при использовании указателя формата:

Операции смещения в Kotlin

Операции правого и левого смещения (Shift) принимают двоичную форму десятичного числа и смещают цифры налево или направо соответственно. Затем они возвращают десятичную форму нового двоичного числа.

К примеру, десятичное число 14 в бинарном виде будет состоять из восьми цифр — 00001110 . Смещение на два пункта влево приведет к числу 00111000 , которое равно 56 в десятичной системе.

Далее дана схема того, что происходит во время операции смещения:

смещение чисел в kotlin

Цифры, которые приходят на замену пустым местам, становятся 0. Отсеченные числа будут потеряны. Смещение вправо аналогично, но цифры сдвигаются в правую часть. Функции Kotlin для данных двух операций являются следующими:

Это инфиксные функции, которые помещаются между операндами, чтобы вызов функции выглядел как операция. Позже мы подробнее рассмотрим инфиксные функции в Kotlin.

Источник

Оцените статью