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

Operadores do Scala

Um operador é um símbolo que informa ao compilador para executar a operação matemática e lógica especificada.

O Scala contém uma variedade rica de operadores embutidos, incluindo os seguintes tipos:

  • Operadores aritméticos

  • Operadores de relação

  • Operadores lógicos

  • Operadores de operações de bits

  • Operadores de atribuição

A seguir, vamos详细介绍以上各种运算符的应用。

Operadores aritméticos

A tabela a seguir lista os operadores aritméticos suportados pelo Scala.

Supondo que a variável A seja 10,B é 20:

OperadorDescriçãoExemplo
+sinal de adiçãoA + O resultado da operação B é 30
-sinal de subtraçãoA - O resultado da operação B é -10
*sinal de multiplicaçãoA * O resultado da operação B é 200
/sinal de divisãoB / O resultado da operação A é 2
%restoO resultado da operação B % A é 0

Exemplo online

object Test {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      var c = 25;
      var d = 25;
      println("a + b = ", + (a + b) );
      println("a - b = ", + (a - b) );
      println("a * b = ", + (a * b) );
      println("b / a = ", + (b / a) );
      println("b % a = ", + (b % a) );
      println("c % a = ", + (c % a) );
      
   }
}

Execute o código acima e o resultado será:

$ scalac Test.scala 
$ scala Test
a + b = 30
a - b = -10
a * b = 200
b / a = 2
b % a = 0
c % a = 5

Operadores de relação

A tabela a seguir lista os operadores de relação suportados pelo Scala.

Supondo que a variável A seja 10,B é 20:

OperadorDescriçãoExemplo
==igual a(A == B) resultado da operação é false
!=diferente de(A != B) resultado da operação é true
>maior(A > B) resultado da operação é false
<menor(A < B) resultado da operação é true
>=maior ou igual a(A >= B) resultado da operação é false
<=menor ou igual a(A <= B) resultado da operação é true

Exemplo online

Exemplo

object Test {
   def main(args: Array[String]) {
      var a = 10;
      var b = 20;
      println("a == b = ") + (a == b);
      println("a != b = "); + (a != b);
      println("a > b = "); + (a > b);
      println("a < b = "); + (a < b);
      println("b >= a = "); + (b >= a);
      println("b <= a = "); + (b <= a);
   }
}

Execute o código acima e o resultado será:

$ scalac Test.scala 
$ scala Test
a == b = false
a != b = true
a > b = false
a < b = true
b >= a = true
b <= a = false

Operadores lógicos

A tabela a seguir lista os operadores lógicos suportados pelo Scala.

Supondo que a variável A seja 1, B é 0:

OperadorDescriçãoExemplo
&&E lógicoO resultado da operação (A && B) é false
||Ou lógicoO resultado da operação (A || B) é true
!Negação lógicaO resultado da operação !(A && B) é true

Exemplo online

object Test {
   def main(args: Array[String]) {
      var a = true;
      var b = false;
      println("a && b = "); + (a && b);
      println("a || b = "); + (a || b);
      println("!(a && b) = "); + !(a && b);
   }
}

Execute o código acima e o resultado será:

$ scalac Test.scala 
$ scala Test
a && b = false
a || b = true
!(a && b) = true

Operadores de operações de bits

Os operadores de operações de bits são usados para operar nos bits, ~, & e | são respectivamente negação, operação lógica bit a bit e operação lógica bit a bit ou, conforme o exemplo a seguir:

pqp & qp | qp ^ q
00000
01011
11110
10011

Se especificar A = 60; e B = 13; Os binários correspondentes das duas variáveis são:

A = 0011 1100
B = 0000 1101
-------Operações de bits----------
A & B = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A = 1100 0011

Regras de operações bit a bit no Scala:

OperadorDescriçãoExemplo
&Operador de e bit a bit(a & b) Output resultante 12 ,interpretação binária: 0000 1100
|Operador de ou bit a bit(a | b) Output resultante 61 , interpretação binária: 0011 1101
^Operador de exclusão bit a bit(a ^ b) Output resultante 49 , interpretação binária: 0011 0001
~Operador de negação bit a bitOutput resultante de (~a ) -61 , interpretação binária: 1100 0011, na forma de complemento de dois de um número binário assinado.
<<Operador de deslocamento à esquerdaa << 2 Resultados de saída 240, interpretação binária: 1111 0000
>>Operador de deslocamento à direitaa >> 2 Resultados de saída 15 ,interpretação binária: 0000 1111
>>>Deslocamento à direita sem sinalA >>>2 Resultados de saída 15, interpretação binária: 0000 1111

Exemplo online

object Test {
   def main(args: Array[String]) {
      var a = 60;           /* 60 = 0011 1100 */  
      var b = 13;           /* 13 = 0000 1101 */
      var c = 0;
      c = a & b;            /* 12 = 0000 1100 */ 
      println("a & b = \ + c );
      c = a | b;            /* 61 = 0011 1101 */
      println("a | b = \ + c );
      c = a ^ b;            /* 49 = 0011 0001 */
      println("a ^ b = \ + c );
      c = ~a;               /* -61 = 1100 0011 */
      println("~a = \ + c );
      c = a << 2;           /* 240 = 1111 0000 */
      println("a << 2 = " + c );
      c = a >> 2;           /* 15 = 1111 */
      println("a >> 2  = " + c );
      c = a >>> 2;          /* 15 = 0000 1111 */
      println("a >>> 2 = " + c );
   }
}

Execute o código acima e o resultado será:

$ scalac Test.scala 
$ scala Test
a & b = 12
a | b = 61
a ^ b = 49
~a = -61
a << 2 = 240
a >> 2  = 15
a >>> 2 = 15

Operadores de atribuição

A seguir está listado os operadores de atribuição suportados pelo Scala:

OperadorDescriçãoExemplo
=Operação de atribuição simples, onde o operando à direita é atribuído ao operando à esquerda.C = A + B atribui A + O resultado da operação de B é atribuído a C
+=Atribuição após adição, onde os operandos de ambos os lados são somados e atribuídos ao operando esquerdo.C += A é equivalente a C = C + A
-=Atribuição após subtração, onde os operandos de ambos os lados são subtraídos e atribuídos ao operando esquerdo.C -= A é equivalente a C = C - A
*=Atribuição após multiplicação, onde os operandos de ambos os lados são multiplicados e atribuídos ao operando esquerdo.C *= A é equivalente a C = C * A
/=Atribuição após divisão, onde os operandos de ambos os lados são divididos e atribuídos ao operando esquerdo.C /= A é equivalente a C = C / A
%=Atribuição após operação de módulo, onde os operandos de ambos os lados são calculados o módulo e atribuído ao operando esquerdo.C %= A é equivalente a C = C % A
<<=Atribuição após deslocamento à esquerda bit a bitC <<= 2 Equivalente a C = C << 2
>>=Atribuição após deslocamento à direita bit a bitC >>= 2 Equivalente a C = C >> 2
&=Atribuição após operação de AND bit a bitC &= 2 Equivalente a C = C & 2
^=Atribuição após operação de XOR bit a bitC ^= 2 Equivalente a C = C ^ 2
|=Atribuição após operação de OR bit a bitC |= 2 Equivalente a C = C | 2

Exemplo online

object Test {
   def main(args: Array[String]) {
      var a = 10;       
      var b = 20;
      var c = 0;
      c = a + b ;
      println("c = a") + b " + c );
      c += a ;
      println("c") += a + c );
      c -= a ;
      println("c") -= a " + c );
      c *= a ;
      println("c") *= a " + c );
      a = 10;
      c = 15;
      c /= a ;
      println("c") /= a + c );
      a = 10;
      c = 15;
      c %= a ;
      println("c %= a  = " + c );
      c <<= 2 ;
      println("c <<= 2  = " + c );
      c >>= 2 ;
      println("c >>= 2  = " + c );
      c >>= a ;
      println("c >>= a  = " + c );
      c &= a ;
      println("c &= 2  = " + c );
     
      c ^= a ;
      println("c ^= a  = " + c );
      c |= a ;
      println("c |= a  = " + c );
   }
}

Execute o código acima e o resultado será:

$ scalac Test.scala 
$ scala Test
c = a + b  = 30
c += a  = 40
c -= a = 30
c *= a = 300
c /= a  = 1
c %= a  = 5
c <<= 2  = 20
c >>= 2  = 5
c >>= a  = 0
c &= 2  = 0
c ^= a  = 10
c |= a  = 10

A prioridade do operador depende do grupo ao qual pertence, o que afeta o cálculo da expressão.

Exemplo: x = 7 + 3 * 2; aqui, o resultado de x é 13, não é 20, porque a multiplicação (*) tem prioridade maior que a adição (+) portanto, ele é calculado primeiro 3*2 Mais 7.

Veja a tabela a seguir, a prioridade diminui do topo para baixo, a mais alta prioridade está no topo, o operador vírgula tem a prioridade mais baixa.

CategoriaOperadorAssociatividade
1() []Esquerda para Direita
2!  ~Direita para Esquerda
3*  /  %Esquerda para Direita
4+  -Esquerda para Direita
5>>> >>> <<Esquerda para Direita
6> >=  < <=Esquerda para Direita
7==  !=Esquerda para Direita
8&Esquerda para Direita
9^Esquerda para Direita
10|Esquerda para Direita
11&&Esquerda para Direita
12||Esquerda para Direita
13=  +=  -=  *=  /=  %= >>=  <<=  &=  ^=   |=Direita para Esquerda
14,Esquerda para Direita