Операторы Kotlin: арифметика, оператор присваивания и многое другое

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

Операторы - это специальные символы (символы), которые выполняют операции с операндами (переменными и значениями). Например, +это оператор, выполняющий сложение.

В статье о переменных Java вы научились объявлять переменные и присваивать значения переменным. Теперь вы научитесь использовать операторы для выполнения с ними различных операций.

1. Арифметические операторы

Вот список арифметических операторов в Котлине:

Котлинские арифметические операторы
Оператор Смысл
+ Сложение (также используется для конкатенации строк)
- Оператор вычитания
* Оператор умножения
/ Оператор отдела
% Оператор модуля

Пример: арифметические операторы

 fun main(args: Array) ( val number1 = 12.5 val number2 = 3.5 var result: Double result = number1 + number2 println("number1 + number2 = $result") result = number1 - number2 println("number1 - number2 = $result") result = number1 * number2 println("number1 * number2 = $result") result = number1 / number2 println("number1 / number2 = $result") result = number1 % number2 println("number1 % number2 = $result") ) 

Когда вы запустите программу, вывод будет:

 число1 + число2 = 16,0 число1 - число2 = 9,0 число1 * число2 = 43,75 число1 / число2 = 3,5714285714285716 число1% число2 = 2,0

+Оператор также используется для конкатенации Stringзначений.

Пример: конкатенация строк

 fun main(args: Array) ( val start = "Talk is cheap. " val middle = "Show me the code. " val end = "- Linus Torvalds" val result = start + middle + end println(result) )

Когда вы запустите программу, вывод будет:

Обсуждение дешево. Покажи мне код. - Линус Торвальдс

Как на самом деле работают арифметические операторы?

Предположим, вы используете +арифметический оператор для сложения двух чисел a и b.

Под капотом выражение a + bвызывает a.plus(b)функцию-член. plusОператор перегружен для работы с Stringценностями и другими основными типами данных ( за исключением Char и Boolean).

 // + оператор для базовых типов operator fun plus (other: Byte): Int operator fun plus (other: Short): Int operator fun plus (other: Int): Int operator fun plus (other: Long): Long operator fun plus (other: Float): Оператор с плавающей запятой fun plus (other: Double): Double // для оператора конкатенации строк fun String? .plus (other: Any?): String 

Вы также можете использовать +оператор для работы с пользовательскими типами (например, объектами) путем перегрузки plus()функции.

Рекомендуемая литература: Перегрузка оператора Kotlin

Вот таблица арифметических операторов и соответствующих им функций:

Выражение Название функции Переводится на
а + б плюс a.plus (б)
а - б минус a.minus (b)
а * б раз а раз (б)
а / б div a.div (b)
а% б мод a.mod (b)

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

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

 val age = 5

Здесь 5 с помощью =оператора присваивается переменной возрасту .

Вот список всех операторов присваивания и их соответствующих функций:

Выражение Эквивалентно Переводится на
а + = Ь а = а + б a.plusAssign (b)
а - = б а = а - б a.minusAssign (b)
а * = б а = а * б a.timesAssign (b)
а / = Ь а = а / б a.divAssign (b)
а% = б а = а% b a.modAssign (b)

Пример: операторы присваивания

 fun main(args: Array) ( var number = 12 number *= 5 // number = number*5 println("number = $number") )

Когда вы запустите программу, вывод будет:

 число = 60

Рекомендуемая литература: Перегрузка операторов присваивания в Котлине.

3. Унарный префикс и операторы инкремента / декремента

Here's a table of unary operators, their meaning, and corresponding functions:

Operator Meaning Expression Translates to
+ Unary plus +a a.unaryPlus()
- Unary minus (inverts sign) -a a.unaryMinus()
! not (inverts value) !a a.not()
++ Increment: increases value by1 ++a a.inc()
-- Decrement: decreases value by 1 --a a.dec()

Example: Unary Operators

 fun main(args: Array) ( val a = 1 val b = true var c = 1 var result: Int var booleanResult: Boolean result = -a println("-a = $result") booleanResult = !b println("!b = $booleanResult") --c println("--c = $c") )

When you run the program, the output will be:

 -a = -1 !b = false --c = 0

Recommended Reading: Overloading Unary Operators

4. Comparison and Equality Operators

Here's a table of equality and comparison operators, their meaning, and corresponding functions:

Operator Meaning Expression Translates to
> greater than a> b a.compareTo(b)> 0
< less than a < b a.compareTo(b) < 0
>= greater than or equals to a>= b a.compareTo(b)>= 0
<= less than or equals to a < = b a.compareTo(b) <= 0
== is equal to a == b a?.equals(b) ?: (b === null)
!= not equal to a != b !(a?.equals(b) ?: (b === null))

Comparison and equality operators are used in control flow such as if expression , when expression , and loops .

Example: Comparison and Equality Operators

 fun main(args: Array) ( val a = -12 val b = 12 // use of greater than operator val max = if (a> b) ( println("a is larger than b.") a ) else ( println("b is larger than a.") b ) println("max = $max") ) 

When you run the program, the output will be:

 b is larger than a. max = 12 

Recommended Reading: Overloading of Comparison and Equality Operators in Kotlin

5. Logical Operators

There are two logical operators in Kotlin: || and &&

Here's a table of logical operators, their meaning, and corresponding functions.

Operator Description Expression Corresponding Function
|| true if either of the Boolean expression is true (a>b)||(a (a>b)or(a
&& true if all Boolean expressions are true (a>b)&&(a (a>b)and(a

Note that, or and and are functions that support infix notation.

Logical operators are used in control flow such as if expression , when expression , and loops .

Example: Logical Operators

 fun main(args: Array) ( val a = 10 val b = 9 val c = -1 val result: Boolean // result is true is a is largest result = (a>b) && (a>c) // result = (a>b) and (a>c) println(result) )

When you run the program, the output will be:

 true

Recommended Reading: Overloading of Logical Operators in Kotlin

6. in Operator

The in operator is used to check whether an object belongs to a collection.

Operator Expression Translates to
in a in b b.contains(a)
!in a !in b !b.contains(a)

Example: in Operator

 fun main(args: Array) ( val numbers = intArrayOf(1, 4, 42, -3) if (4 in numbers) ( println("numbers array contains 4.") ) )

When you run the program, the output will be:

 numbers array contains 4.

Recommended Reading: Kotlin in Operator Overloading

7. Index access Operator

Here are some expressions using index access operator with corresponding functions in Kotlin.

Expression Translated to
a(i) a.get(i)
a(i, n) a.get(i, n)
a(i1, i2,… , in) a.get(i1, i2,… , in)
a(i) = b a.set(i, b)
a(i, n) = b a.set(i, n, b)
a(i1, i2,… , in) = b a.set(i1, i2,… , in, b)

Example: Index access Operator

 fun main(args: Array) ( val a = intArrayOf(1, 2, 3, 4, - 1) println(a(1)) a(1)= 12 println(a(1)) ) 

When you run the program, the output will be:

 2 12

Recommended Reading: Kotlin Index access operator Overloading

8. Invoke Operator

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

Выражение Переведено на
a() a.invoke()
a(i) a.invoke(i)
a(i1, i2,… , in) a.inkove(i1, i2,… , in)
a(i) = b a.set(i, b)

В Kotlin круглые скобки переводятся для вызова invokeфункции-члена.

Рекомендуемая литература: вызов перегрузки оператора в Kotlin

Побитовая операция

В отличие от Java, в Kotlin нет побитовых операторов и операторов битового сдвига. Для выполнения этой задачи используются различные функции (поддерживающие инфиксную нотацию):

  • shl - Подписанный сдвиг влево
  • shr - Подписанный сдвиг вправо
  • ushr - Беззнаковый сдвиг вправо
  • and - Побитовое и
  • or - Побитовое или
  • xor - Побитовый xor
  • inv - Побитовая инверсия

Посетите эту страницу, чтобы узнать больше о побитовых операциях в Kotlin.

Кроме того, в Kotlin нет тернарного оператора, в отличие от Java.

Интересные статьи...