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

Operadores no Kotlin

O Kotlin possui um conjunto de operadores que podem executar operações aritméticas, de atribuição, operadores de comparação, etc. Você aprenderá a usar esses operadores neste artigo.

Operadores são símbolos especiais (caracteres) que executam operações em operandos (variáveis e valores). Por exemplo,+ é o operador de adição.

emVariáveis no KotlinNeste artigo, você aprendeu a declarar variáveis e atribuir valores a elas. Agora, você aprenderá a usar operadores para executar várias operações nelas.

Operadores aritméticos

A seguir está a lista de operadores aritméticos no Kotlin:

Operadores aritméticos do Kotlin
Operadordescrição
+Operador de adição (também usado para concatenação de strings)
-Operador de subtração
*Operador de multiplicação
/Operador de divisão
Operador de módulo

Exemplo: operadores aritméticos

fun main(args: Array<String>) {
    val número1 = 12.5
    val número2 = 3.5
    var result: Double
    result = número1 + number2
    println("número1 + number2 = $result)
    result = número1 - number2
    println("número1 - number2 = $result)
    result = número1 * number2
    println("número1 * number2 = $result)
    result = número1 / number2
    println("número1 / number2 = $result)
    result = número1 % número2
    println("número1 % número2 = $result)
}

Quando o programa é executado, a saída é:

number1 + number2 = 16.0
number1 - number2 = 9.0
number1 * number2 = 43.75
number1 / number2 = 3.5714285714285716
number1 % número2 = 2.0

+ Os operadores, também podem ser usados para concatenar valores de String, juntando strings.

Exemplo: concatenação de strings

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

Quando o programa é executado, a saída é:

Falar é fácil. Mostre-me o código. - Linus Torvalds

Como funcionam realmente os operadores aritméticos?

Suponha que você esteja usando + Os operadores aritméticos somam dois números a e b.

Por trás das cenas, a expressão a + b chama o membro da função a.plus(b). O operador plus é sobrecarregado para lidar com valores de String e outros tipos de dados básicos (Char E Booleanexceto).

// + Operadores de tipos básicos
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
// para concatenação de strings
operator fun String?.plus(other: Any?): String

Você também pode usar + Os operadores são tratados por sobrecarga da função plus() para tipos definidos pelo usuário (como objetos).

Recomendação de leitura: Sobrecarga de operadores Kotlin

Aqui está a lista de operadores aritméticos e suas funções correspondentes:

ExpressãoNome da funçãoUso
a + badicionaradicionar
a-bsubtrairsubtrair
a * bmultiplicar
multiplicar
a / bdividir
dividir
a % bMóduloa.mod(b)

Operadores de atribuição

Os operadores de atribuição são usados para atribuir valores a variáveis. Já usamos o operador de atribuição simples = anteriormente.

val age = 5

Aqui, usa-se o operador = para 5 Atribuído ao variável age.

A seguir está a lista de todos os operadores de atribuição e suas funções correspondentes:

Expressãoequivalente aUso
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)

exemplo: operadores de atribuição

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

Quando o programa é executado, a saída é:

number = 60

unário prefixo e aumento/operador de decrescimo

Este é o operador unário, cujo significado e tabela de funções correspondentes estão na tabela:

OperadordescriçãoExpressãoUso
+adição unária+aa.unaryPlus()
-subtração unária-aa.unaryMinus()
não (inverter valor)!aa.not()
++aumentando: valor aumentado1++aa.inc()
--decrescendo: valor diminuído1--a
a.dec()

exemplo: operadores unários

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

Quando o programa é executado, a saída é:

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

operadores de comparação e igualdade

Este é o operador de igualdade e comparação, cujo significado e lista de funções correspondentes estão na tabela:

OperadordescriçãoExpressãoUso
>maiora> ba.compareTo(b)> 0
<menora <ba.compareTo(b)<0
> =maior ou iguala> = ba.compareTo(b)>= 0
<=menor ou iguala <= ba.compareTo(b)<= 0
==iguala == ba?.equals(b)?:(b === null)
!=não iguala!= b!(a?.equals(b)?:(b ===null))

Os operadores de comparação e igualdade são usados para controle de fluxo, por exemplo:expressão ifExpressão when E Loop.

exemplo: operadores de comparação e igualdade

fun main(args: Array<String>) {
    val a = -12
    val b = 12
    //usando o operador maior que
    val max = if (a > b) {
        println("a é maior que b")
        a
    } else {
        println("b é maior que a")
        b
    }
    println("max = $max")
}

Quando o programa é executado, a saída é:

b é maior que a
max = 12

operador lógico

Existem dois operadores lógicos no Kotlin: || e &&

Este é o operador lógico, cujo significado e correspondente função estão na tabela.

OperadordescriçãoExpressãocorrespondente à função
||Se qualquer expressão booleana for true, então é true
(a>b)||(a<c)(a>b)or(a<c)
&&Se todas as expressões booleanas forem true, então é true(a>b)&&(a<c)(a>b)and(a<c)

Observe que or e and são funções que suportam a notação infixa.

Os operadores lógicos são usados para controle de fluxo, por exemplo Expressão ifExpressão when E Loop.

Exemplo: operadores lógicos

fun main(args: Array<String>) {
    val a = 10
    val b = 9
    val c = -1
    val result: Boolean
    // result é true se todos os expressões booleanas forem true, então é o maior
    result = (a>b) && (a>c) // result = (a>b) and (a>c)
    println(result)
}

Quando o programa é executado, a saída é:

true

Operador in

O operador in é usado para verificar se um objeto pertence a um conjunto.

OperadorExpressãoUso
in
a in bb.contains(a)
!in
a !in b
!b.contains(a)

Exemplo: operador in

fun main(args: Array<String>) {
    val numbers = intArrayOf(1, 4, 42, -3])
    if (4 in numbers) {
        println("numbers array contém 4.")
    }
}

Quando o programa é executado, a saída é:

O array numbers contém  4.

Operador de acesso por índice

A seguir estão algumas expressões usando o operador de acesso por índice com funções correspondentes no Kotlin.

ExpressãoUso
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)

Exemplo: operador de acesso por índice

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

Quando o programa é executado, a saída é:

2
12

Operador invoke

A seguir estão algumas expressões usando o operador invoke com funções correspondentes no Kotlin.

ExpressãoTradução para
a()a.invoke()
a(i)a.invoke(i)
a(i1, i2, ..., in)a.inkove(i1, i2, ..., in)
a[i] = ba.set(i, b)

No Kotlin, os parênteses são convertidos para a chamada da função membro invoke.

Operações bit a bit

Diferente do Java, o Kotlin não possui operadores bit a bit e de deslocamento. Para executar essas tarefas, são usadas várias funcionalidades (suportando símbolos infix):

  • shl - Deslocamento à Esquerda com Sinal

  • shr - Deslocamento à Direita com Sinal

  • ushr - Deslocamento à Direita Assinado

  • and - Operação bit a bit E

  • or - Operação bit a bit OU

  • xor - Operação bit a bit XOR

  • inv - Inversão bit a bit

Acesse esta página para saber mais sobreOperações bit a bit no KotlinMais informações.

Diferente do Java, o Kotlin não possui operador ternário.