Το Kotlin διαθέτει ένα σύνολο τελεστών που εκτελούν αριθμητική, ανάθεση, τελεστές σύγκρισης και άλλα. Θα μάθετε να χρησιμοποιείτε αυτούς τους τελεστές σε αυτό το άρθρο.
Οι χειριστές είναι ειδικά σύμβολα (χαρακτήρες) που εκτελούν λειτουργίες σε τελεστές (μεταβλητές και τιμές). Για παράδειγμα, +
είναι ένας χειριστής που εκτελεί προσθήκη.
Στο άρθρο μεταβλητών Java, μάθατε να δηλώνετε μεταβλητές και να αντιστοιχίζετε τιμές σε μεταβλητές. Τώρα, θα μάθετε να χρησιμοποιείτε χειριστές που εκτελούν διάφορες λειτουργίες σε αυτούς.
1. Αριθμητικοί χειριστές
Ακολουθεί μια λίστα αριθμητικών τελεστών στο Kotlin:
Αριθμητικοί χειριστές KotlinΧειριστής | Εννοια |
---|---|
+ | Προσθήκη (χρησιμοποιείται επίσης για συνένωση συμβολοσειρών) |
- | Διαχειριστής αφαίρεσης |
* | Χειριστής πολλαπλασιασμού |
/ | Διαχειριστής τμήματος |
% | Χειριστής Modulus |
Παράδειγμα: Αριθμητικοί χειριστές
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") )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
number1 + number2 = 16.0 number1 - number2 = 9.0 number1 * number2 = 43.75 number1 / number2 = 3.5714285714285716 number1% number2 = 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) )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
Η συζήτηση είναι φθηνή. Δείξε μου τον κωδικό. - Linus Torvalds
Πώς λειτουργούν πραγματικά οι αριθμητικοί τελεστές;
Ας υποθέσουμε ότι χρησιμοποιείτε +
αριθμητικό τελεστή για να προσθέσετε δύο αριθμούς a και b.
Κάτω από το καπό, η έκφραση a + b
καλεί τη a.plus(b)
λειτουργία μέλους. Ο plus
χειριστής είναι υπερφορτωμένος για να εργαστεί με String
τιμές και άλλους βασικούς τύπους δεδομένων (εκτός από το Char and Boolean).
// + χειριστής για βασικούς τύπους διασκέδαση χειριστή συν (άλλα: Byte): Διασκέδαση μεταξύ χειριστή συν (άλλα: Σύντομη): Διασκέδαση μεταξύ χειριστή συν (άλλα: Int): Διασκέδαση μεταξύ χειριστή συν (άλλα: Long): Διασκέδαση μεγάλου χειριστή (άλλο: Float): Float operator fun plus (other: Double): Double // for string concatenation operator fun String? .plus (other: Any?): String
Μπορείτε επίσης να χρησιμοποιήσετε το +
χειριστή για να εργαστείτε με τύπους που καθορίζονται από το χρήστη (όπως αντικείμενα) με τη plus()
λειτουργία υπερφόρτωσης .
Συνιστώμενη ανάγνωση: Υπερφόρτωση χειριστή Kotlin
Ακολουθεί ένας πίνακας αριθμητικών τελεστών και οι αντίστοιχες λειτουργίες τους:
Εκφραση | Όνομα συνάρτησης | Μεταφράζεται σε |
---|---|---|
α + β | συν | a.plus (β) |
α - β | μείον | α. λεπτά (β) |
α * β | φορές | α. ώρες (β) |
α / β | div | α.div (β) |
a% β | mod | a.mod (β) |
2. Χειριστές ανάθεσης
Οι τελεστές ανάθεσης χρησιμοποιούνται για την εκχώρηση τιμής σε μια μεταβλητή. Έχουμε ήδη χρησιμοποιήσει απλό χειριστή ανάθεσης στο =
παρελθόν.
ηλικία = 5
Εδώ, το 5 αντιστοιχεί σε μεταβλητή ηλικία χρησιμοποιώντας τον =
τελεστή.
Ακολουθεί μια λίστα όλων των τελεστών ανάθεσης και των αντίστοιχων λειτουργιών τους:
Εκφραση | Ισοδυναμεί με | Μεταφράζεται σε |
---|---|---|
α + = β | α = α + β | a.plusAssign (β) |
α - = β | α = α - β | a.minusAssign (β) |
α * = β | α = α * β | a.timesAssign (β) |
α / = β | α = α / β | a.divAssign (β) |
a% = β | α = α% β | a.modAssign (β) |
Παράδειγμα: Χειριστές ανάθεσης
fun main(args: Array) ( var number = 12 number *= 5 // number = number*5 println("number = $number") )
Όταν εκτελείτε το πρόγραμμα, η έξοδος θα είναι:
αριθμός = 60
Συνιστώμενη ανάγνωση: Υπερφόρτωση των χειριστών ανάθεσης στο Kotlin.
3. Unary πρόθεμα και χειριστές αύξησης / μείωσης
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
Λειτουργία Bitwise
Σε αντίθεση με την Java, δεν υπάρχουν τελεστές στο Bitlin. Για την εκτέλεση αυτής της εργασίας, χρησιμοποιούνται διάφορες λειτουργίες (υποστηρίζοντας infix notation):
shl
- Υπογεγραμμένη στροφή αριστεράshr
- Υπογραφή στροφής δεξιάushr
- Μη υπογεγραμμένη στροφή προς τα δεξιάand
- Bitwise καιor
- Bitwise ήxor
- Bitwise xorinv
- Αντιστροφή bitwise
Επισκεφτείτε αυτήν τη σελίδα για να μάθετε περισσότερα σχετικά με τις λειτουργίες Bitwise στο Kotlin.
Επίσης, δεν υπάρχει τριαδικός χειριστής στο Kotlin σε αντίθεση με την Java.