Kotlin operateri: aritmetika, operater dodjele i još mnogo toga

Kotlin ima skup operatora za izvođenje aritmetike, operatora dodjeljivanja, usporedbe i još mnogo toga. U ovom ćete članku naučiti koristiti ove operatore.

Operatori su posebni simboli (znakovi) koji izvršavaju operacije nad operandima (varijable i vrijednosti). Na primjer, +je operator koji vrši zbrajanje.

U članku o Java varijablama naučili ste deklarirati varijable i dodijeliti vrijednosti varijablama. Sada ćete naučiti koristiti operatore koji na njima izvršavaju razne operacije.

1. Aritmetički operatori

Evo popisa aritmetičkih operatora u Kotlinu:

Kotlinski operateri
Operater Značenje
+ Zbrajanje (koristi se i za spajanje nizova)
- Operator oduzimanja
* Operator množenja
/ Divizion
% Operater modula

Primjer: Aritmetički operatori

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

Kada pokrenete program, izlaz će biti:

 broj1 + broj2 = 16,0 broj1 - broj2 = 9,0 broj1 * broj2 = 43,75 broj1 / broj2 = 3,5714285714285716 broj1% broj2 = 2,0

+Operater koristi se i za stjecajem Stringvrijednosti.

Primjer: Spajanje nizova

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

Kada pokrenete program, izlaz će biti:

Razgovor je jeftin. Pokaži mi šifru. - Linus Torvalds

Kako zapravo rade aritmetički operatori?

Pretpostavimo da koristite +aritmetički operator za sabiranje dva broja a i b.

Ispod napa, izraz a + bpoziva a.plus(b)funkciju člana. plusOperater je preopterećen na posao s Stringvrijednostima i drugih osnovnih tipova podataka (osim Char i Boolean).

 // + operator za osnovne tipove operator plus (ostalo: Bajt): Int operator fun plus (ostalo: Kratko): Int operator fun plus (ostalo: Int): Int operator fun plus (ostalo: Long): Long operator fun fun plus (ostalo: Float): Funkcija float operatora plus (ostalo: Double): Double // za zabavu operatora spajanja niza String? .plus (ostalo: Bilo koji?): String 

+Operator možete koristiti i za rad s korisnički definiranim vrstama (poput objekata) preopterećenjem plus()funkcije.

Preporučena literatura: Preopterećenje operatera Kotlin

Evo tablice aritmetičkih operatora i njihovih odgovarajućih funkcija:

Izraz Naziv funkcije Prevodi u
a + b plus a.plus (b)
a - b minus a.minus (b)
a * b puta a.vremena (b)
a / b div a.div (b)
a% b mod a.mod (b)

2. Operatori dodjele

Operatori dodjele koriste se za dodjeljivanje vrijednosti varijabli. Već smo koristili jednostavan operator dodjeljivanja =.

 valna dob = 5

Ovdje je 5 dodijeljeno promjenjivoj dobi pomoću =operatora.

Evo popisa svih operatora dodjele i njihovih odgovarajućih funkcija:

Izraz Ekvivalentno Prevodi u
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)

Primjer: Operatori dodjele

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

Kada pokrenete program, izlaz će biti:

 broj = 60

Preporučena literatura: Preopterećenje operatora dodjele u Kotlinu.

3. Unarski operateri prefiksa i povećanja / smanjenja

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

Evo nekoliko izraza koji koriste operator poziva s odgovarajućim funkcijama u Kotlinu.

Izraz Prevedeno na
a() a.invoke()
a(i) a.invoke(i)
a(i1, i2,… , in) a.inkove(i1, i2,… , in)
a(i) = b a.set(i, b)

U Kotlinu se zagrade prevode u invokefunkciju člana poziva .

Preporučena literatura: Pozivanje preopterećenja operatora u Kotlinu

Bit-ov rad

Za razliku od Jave, u Kotlinu ne postoje bitni i bitshift operateri. Za izvršavanje ovog zadatka koriste se razne funkcije (koje podržavaju infiksni zapis):

  • shl - Potpisana smjena lijevo
  • shr - Potpisana smjena udesno
  • ushr - Nepotpisana smjena udesno
  • and - Bitno i
  • or - Bitno ili
  • xor - Bitno xor
  • inv - Bitna inverzija

Posjetite ovu stranicu da biste saznali više o bitovnim operacijama u Kotlinu.

Također, u Kotlinu ne postoji ternarni operator za razliku od Jave.

Zanimljivi članci...