Operadores Kotlin: aritmética, operador de atribuição e mais

Kotlin tem um conjunto de operadores para realizar operações aritméticas, de atribuição, de comparação e muito mais. Você aprenderá a usar esses operadores neste artigo.

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

No artigo de variáveis ​​Java, você aprendeu a declarar variáveis ​​e atribuir valores a variáveis. Agora, você aprenderá a usar os operadores para realizar várias operações neles.

1. Operadores aritméticos

Aqui está uma lista de operadores aritméticos em Kotlin:

Operadores aritméticos de Kotlin
Operador Significado
+ Adição (também usado para concatenação de string)
- Operador de subtração
* Operador de multiplicação
/ Operador de Divisão
% Operador de Módulo

Exemplo: operadores aritméticos

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

Quando você executa o programa, a saída será:

 numero1 + numero2 = 16,0 numero1 - numero2 = 9,0 numero1 * numero2 = 43,75 numero1 / numero2 = 3,5714285714285716 numero1% numero2 = 2,0

O +operador também é usado para a concatenação de Stringvalores.

Exemplo: Concatenação de Strings

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

Quando você executa o programa, a saída será:

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

Como os operadores aritméticos realmente funcionam?

Suponha que você esteja usando o +operador aritmético para adicionar dois números a e b.

Por dentro, a expressão a + bchama a a.plus(b)função de membro. O plusoperador está sobrecarregado para trabalhar com Stringvalores e outros tipos de dados básicos (exceto Char e Boolean).

 // + operador para tipos básicos operator fun plus (outro: Byte): Int operator fun plus (other: Short): Int operator fun plus (other: Int): Int operator fun plus (other: Long): Oper operator fun plus (outro: Float): Float operator fun plus (other: Double): Double // para string operador de concatenação fun String? .plus (outro: Any?): String 

Você também pode usar o +operador para trabalhar com tipos definidos pelo usuário (como objetos), sobrecarregando a plus()função.

Leitura recomendada: sobrecarga do operador Kotlin

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

Expressão Nome da função Traduz para
a + b mais a.plus (b)
a - b menos a.minus (b)
a * b vezes a.times (b)
a / b div a.div (b)
a% b mod a.mod (b)

2. Operadores de atribuição

Operadores de atribuição são usados ​​para atribuir valor a uma variável. Já usamos o operador de atribuição simples =antes.

 val idade = 5

Aqui, 5 é atribuído à idade variável usando o =operador.

Aqui está uma lista de todos os operadores de atribuição e suas funções correspondentes:

Expressão Equivalente a Traduz para
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)

Exemplo: Operadores de Atribuição

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

Quando você executa o programa, a saída será:

 número = 60

Leitura recomendada: sobrecarregando operadores de atribuição em Kotlin.

3. Prefixo unário e operadores de incremento / decremento

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

Aqui estão algumas expressões que usam o operador invoke com funções correspondentes no Kotlin.

Expressão Traduzido para
a() a.invoke()
a(i) a.invoke(i)
a(i1, i2,… , in) a.inkove(i1, i2,… , in)
a(i) = b a.set(i, b)

Em Kotlin, parênteses são traduzidos para chamar a invokefunção de membro.

Leitura recomendada: invocar sobrecarga do operador em Kotlin

Operação bit a bit

Ao contrário do Java, não há operadores bit a bit e bitshift no Kotlin. Para realizar essa tarefa, várias funções (com suporte à notação de infixo) são usadas:

  • shl - Turno assinado à esquerda
  • shr - Turno sinalizado à direita
  • ushr - Mudança sem sinal para a direita
  • and - Bitwise e
  • or - Bitwise ou
  • xor - xor bit a bit
  • inv - Inversão bit a bit

Visite esta página para saber mais sobre operações bit a bit em Kotlin.

Além disso, não há operador ternário em Kotlin, ao contrário do Java.

Artigos interessantes...