English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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详细介绍以上各种运算符的应用。
A tabela a seguir lista os operadores aritméticos suportados pelo Scala.
Supondo que a variável A seja 10,B é 20:
Operador | Descrição | Exemplo |
---|---|---|
+ | sinal de adição | A + O resultado da operação B é 30 |
- | sinal de subtração | A - O resultado da operação B é -10 |
* | sinal de multiplicação | A * O resultado da operação B é 200 |
/ | sinal de divisão | B / O resultado da operação A é 2 |
% | resto | O resultado da operação B % A é 0 |
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
A tabela a seguir lista os operadores de relação suportados pelo Scala.
Supondo que a variável A seja 10,B é 20:
Operador | Descrição | Exemplo |
---|---|---|
== | 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 |
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
A tabela a seguir lista os operadores lógicos suportados pelo Scala.
Supondo que a variável A seja 1, B é 0:
Operador | Descrição | Exemplo |
---|---|---|
&& | E lógico | O resultado da operação (A && B) é false |
|| | Ou lógico | O resultado da operação (A || B) é true |
! | Negação lógica | O resultado da operação !(A && B) é true |
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
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:
p | q | p & q | p | q | p ^ q |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 |
1 | 0 | 0 | 1 | 1 |
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:
Operador | Descrição | Exemplo |
---|---|---|
& | 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 bit | Output 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 à esquerda | a << 2 Resultados de saída 240, interpretação binária: 1111 0000 |
>> | Operador de deslocamento à direita | a >> 2 Resultados de saída 15 ,interpretação binária: 0000 1111 |
>>> | Deslocamento à direita sem sinal | A >>>2 Resultados de saída 15, interpretação binária: 0000 1111 |
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
A seguir está listado os operadores de atribuição suportados pelo Scala:
Operador | Descrição | Exemplo |
---|---|---|
= | 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 bit | C <<= 2 Equivalente a C = C << 2 |
>>= | Atribuição após deslocamento à direita bit a bit | C >>= 2 Equivalente a C = C >> 2 |
&= | Atribuição após operação de AND bit a bit | C &= 2 Equivalente a C = C & 2 |
^= | Atribuição após operação de XOR bit a bit | C ^= 2 Equivalente a C = C ^ 2 |
|= | Atribuição após operação de OR bit a bit | C |= 2 Equivalente a C = C | 2 |
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.
Categoria | Operador | Associatividade |
---|---|---|
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 |