Kotlin har en uppsättning operatörer för att utföra aritmetik, tilldelning, jämförelseoperatörer och mer. Du lär dig att använda dessa operatörer i den här artikeln.
Operatörer är specialsymboler (tecken) som utför operationer på operander (variabler och värden). Till exempel +
är en operatör som utför tillägg.
I artikeln om Java-variabler lärde du dig att deklarera variabler och tilldela värden till variabler. Nu lär du dig att använda operatörer som utför olika operationer på dem.
1. Aritmetiska operatörer
Här är en lista över aritmetiska operatörer i Kotlin:
Kotlin aritmetiska operatörerOperatör | Menande |
---|---|
+ | Tillägg (används även för strängkompatering) |
- | Subtraktionsoperatör |
* | Multiplikationsoperatör |
/ | Division Operatör |
% | Moduloperatör |
Exempel: Aritmetiska operatörer
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") )
När du kör programmet blir resultatet:
nummer1 + nummer2 = 16,0 nummer1 - nummer2 = 9,0 nummer1 * nummer2 = 43,75 nummer1 / nummer2 = 3,5714285714285716 nummer1% nummer2 = 2,0
Den +
operatör används även för sammanlänkningen av String
värden.
Exempel: Sammankoppling av strängar
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) )
När du kör programmet blir resultatet:
Prat är billigt. Visa mig koden. - Linus Torvalds
Hur aritmetiska operatörer fungerar egentligen?
Antag att du använder +
aritmetiska operatorer för att lägga till två siffror a och b.
Under huven a + b
kallar uttrycket a.plus(b)
medlemsfunktion. Den plus
operatör är överbelastad med arbete med String
värderingar och andra grundläggande datatyper (utom Char och Boolean).
// + operatör för grundläggande typer operator fun plus (övrigt: Byte): Int operator fun plus (övrigt: Short): Int operator fun plus (övrigt: Int): Int operator fun plus (övrigt: Long): Long operator fun plus (övrigt: Float): Float operator fun plus (övrigt: Double): Double // för string concatenation operator fun String? .plus (other: Any?): String
Du kan också använda +
operatören för att arbeta med användardefinierade typer (som objekt) genom överbelastningsfunktion plus()
.
Rekommenderad läsning: Kotlin-operatörsöverbelastning
Här är en tabell över aritmetiska operatorer och deras motsvarande funktioner:
Uttryck | Funktionsnamn | Översätter till |
---|---|---|
a + b | plus | a.plus (b) |
a - b | minus- | a.minus (b) |
a * b | gånger | a. gånger (b) |
a / b | div | a.div (b) |
a% b | mod | a.mod (b) |
2. Uppdragsoperatörer
Tilldelningsoperatörer används för att tilldela värde till en variabel. Vi har redan använt enkla uppdragsoperatörer =
tidigare.
val ålder = 5
Här tilldelas 5 variabel ålder med =
operatören.
Här är en lista över alla uppdragsoperatörer och deras motsvarande funktioner:
Uttryck | Ekvivalent med | Översätter till |
---|---|---|
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) |
Exempel: Uppdragsoperatörer
fun main(args: Array) ( var number = 12 number *= 5 // number = number*5 println("number = $number") )
När du kör programmet blir resultatet:
antal = 60
Rekommenderad läsning: Överbelastning av uppdragsoperatörer i Kotlin.
3. Unary prefix och Increment / Decrement Operators
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
Här är några uttryck som använder anropsoperatören med motsvarande funktioner i Kotlin.
Uttryck | Översatt till |
---|---|
a() | a.invoke() |
a(i) | a.invoke(i) |
a(i1, i2,… , in) | a.inkove(i1, i2,… , in) |
a(i) = b | a.set(i, b) |
I Kotlin översätts parentes till samtalsmedlemsfunktion invoke
.
Rekommenderad läsning: Anropa överbelastning av operatör i Kotlin
Bitvis drift
Till skillnad från Java finns det inga bitvisa och bitshift-operatörer i Kotlin. För att utföra denna uppgift används olika funktioner (stöd för infixnotation):
shl
- Signerad skift åt vänstershr
- Signerad skift till högerushr
- Osignerad skift till högerand
- Bitvis ochor
- Bitvis ellerxor
- Bitvis xorinv
- Bitvis inversion
Besök den här sidan för att lära dig mer om Bitvis verksamhet i Kotlin.
Dessutom finns det ingen ternär operatör i Kotlin till skillnad från Java.