English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Kotlin基础教程

Kotlin流程控制

Функции в Kotlin

Строки в Kotlin

Kotlin面向对象(OOP)

Операторы Kotlin

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

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

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

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

Ниже приведен список арифметических операторов в Kotlin:

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

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

fun main(args: Array<String>) {
    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<String>) {
    val start = "Talk is cheap. "
    val middle = "Show me the code. "
    val end = "- Linus Torvalds"
    val result = start + middle + end
    println(result)
}

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

Talk is cheap. Show me the code. - Linus Torvalds

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

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

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

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

operator fun plus(other: Double): Double

// для строкового串联 operator fun String?.plus(other: Any?): String

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

ВыражениеРекомендуется к прочтению:Использование
Перегрузка операторов в KotlinЭто список арифметических операторов и соответствующих им функций:имя функции
a + bдобавлениеa - b
субтракцияa * b
умножение
a * ba / b
деление
a % bпо модулюa.mod(b)

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

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

val age = 5

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

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

ВыражениеэквивалентноИспользование
a += ba = a + ba.plusAssign(b)
a -= ba = a - ba.minusAssign(b)
a *= ba = a * ba.timesAssign(b)
a /= ba = a / ba.divAssign(b)
a %= ba = a % ba.modAssign(b)

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

fun main(args: Array<String>) {
    var number = 12
    number *= 5 // number = number * 5
    println("number = $number")
}

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

number = 60

префиксные однородные и инкрементные/декрементные операторы

Это унарные операторы, их значения и соответствующие функции представлены в таблице:

ОператорОписаниеВыражениеИспользование
+однородный плюс+aa.unaryPlus()
-Унарное вычитание-aa.unaryMinus()
!Не (обратное значение)!aa.not()
++Увеличение: значение увеличивается на 1++aa.inc()
--Уменьшение: значение уменьшается на 1--a
a.dec()

Пример: Унарные операторы

fun main(args: Array<String>) {
    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")
}

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

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

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

Это операторы равенства и сравнения, их значения и список соответствующих функций:

ОператорОписаниеВыражениеИспользование
>Большеa > ba.compareTo(b) > 0
<Меньшеa < ba.compareTo(b) < 0
>=Больше или равноa >= ba.compareTo(b) >= 0
<=Меньше или равноa <= ba.compareTo(b) <= 0
==Равноa == ba?.equals(b)?: (b === null)
!=Не равноa != b!(a?.equals(b)?: (b === null))

Операторы сравнения и равенства используются для управления потоком, например: if-выражение,выражение when и Циклы.

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

fun main(args: Array<String>) {
    val a = -12
    val b = 12
    //Использование оператора greater than
    val max = if (a > b) {
        println("a больше b")
        a
    } else {
        println("b больше a")
        b
    }
    println("max = $max")
}

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

b больше a
max = 12

Логические операторы

В Kotlin есть два логических оператора: || и &&

Это логические операторы, их значения и соответствующие функции таблицы.

ОператорОписаниеВыражениеСоответствующие функции
||Если хотя бы одно булевое выражение истинно, то результат true
(a>b)||(a<c)(a>b)or(a<c)
&&Если все булевы выражения истинны, то результат true(a>b)&&(a<c)(a>b)and(a<c)

Обратите внимание, что or и and поддерживают инFIX-представление.

Логические операторы используются для управления потоком, например выражение if,выражение when и Циклы.

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

fun main(args: Array<String>) {
    val a = 10
    val b = 9
    val c = -1
    val result: Boolean
    // result true означает, что максимальное
    result = (a > b) && (a > c) // result = (a > b) and (a > c)
    println(result)
}

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

true

Оператор in

Оператор in используется для проверки того, является ли объект частью集合а.

ОператорВыражениеИспользование
in
a in bb.contains(a)
!in
a !in b
!b.contains(a)

Пример: оператор in

fun main(args: Array<String>) {
    val numbers = intArrayOf(1, 4, 42, -3)
    if (4 in numbers) {
        println("numbers содержит 4.")
    }
}

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

Массив numbers содержит 4.

Оператор доступа по индексу

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

выражениеИспользование
a[i]a.get(i)
a[i, n]a.get(i, n)
a[i1, i2, ..., in]a.get(i1, i2, ..., in)
a[i] = ba.set(i, b)
a[i, n] = ba.set(i, n, b)
a[i1, i2, ..., in] = ba.set(i1, i2, ..., in, b)

Пример: оператор доступа по индексу

fun main(args: Array<String>) {
    val a = intArrayOf(1, 2, 3, 4, -1)
    println(a[1])   
    a[1]= 12
    println(a[1])
}

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

2
12

Оператор invoke

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

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

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

Битовые операции

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

  • shl - левое носное с подписью

  • shr - правое носное с подписью

  • ushr - беззнаковое右оносное

  • and - битовое И

  • or - битовое ИЛИ

  • xor - битовое исключающее ИЛИ

  • inv - обратное битовое

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

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