Оператори на Kotlin: Аритметика, Оператор за присвояване и др

Kotlin има набор от оператори за извършване на аритметика, оператори за присвояване, сравнение и други. Ще се научите да използвате тези оператори в тази статия.

Операторите са специални символи (символи), които извършват операции върху операнди (променливи и стойности). Например, +е оператор, който извършва добавяне.

В статията за променливи Java научихте да декларирате променливи и да присвоявате стойности на променливи. Сега ще се научите да използвате оператори, които извършват различни операции върху тях.

1. Аритметични оператори

Ето списък на аритметичните оператори в Kotlin:

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

Пример: Аритметични оператори

 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).

 // + оператор за основни типове оператор fun plus (друго: Байт): Int оператор fun plus (друго: Кратко): Int оператор fun plus (друго: Int): Int оператор fun plus (друго: Long): Long operator fun plus (друго: Float): Float оператор забавно плюс (друго: Double): Double // за оператор за конкатенация на низове fun String? .plus (друго: Any?): String 

Можете също да използвате +оператор за работа с дефинирани от потребителя типове (като обекти) чрез plus()функция за претоварване .

Препоръчително четене: Претоварване на оператора Kotlin

Ето таблица на аритметичните оператори и съответните им функции:

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

2. Оператори за възлагане

Операторите на присвояване се използват за присвояване на стойност на променлива. Вече използвахме прост оператор за присвояване =.

 вал възраст = 5

Тук 5 се присвоява на променлива възраст, използвайки =оператор.

Ето списък на всички оператори за присвояване и съответните им функции:

Израз Еквивалентно на Превежда на
a + = b a = a + b a.plusAssign (b)
a - = b a = a - b a.minusAssign (b)
a * = b a = a * b a.timesAssign (b)
a / = b a = a / b a.divAssign (b)
a% = b a = a% b a.modAssign (b)

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

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

Когато стартирате програмата, изходът ще бъде:

 число = 60

Препоръчително четене: Претоварване на оператори за присвояване в Kotlin.

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функция член.

Препоръчително четене: Invoke Operator Overloading в Kotlin

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

За разлика от Java, в Kotlin няма битови и битови смени оператори. За изпълнението на тази задача се използват различни функции (поддържащи инфикс нотация):

  • shl - Подписана смяна наляво
  • shr - Подписана смяна надясно
  • ushr - Неподписана смяна надясно
  • and - Побитови и
  • or - Побитово или
  • xor - Побитово xor
  • inv - Побитова инверсия

Посетете тази страница, за да научите повече за битовите операции в Kotlin.

Също така, в Kotlin няма троичен оператор за разлика от Java.

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