English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Un operador es un símbolo que se utiliza para indicar al compilador que se debe ejecutar la operación matemática y lógica especificada.
Scala contiene una rica variedad de operadores integrados, incluyendo los siguientes tipos:
Operadores aritmeticos
Operadores de relacion
Operadores lógicos
Operadores de bits
Operadores de asignación
A continuación, les presentaremos en detalle el uso de estos operadores.
La siguiente tabla enumera los operadores aritmeticos soportados por Scala.
Supongamos que la variable A es 10,B es 20:
运算符 | Descripción | Ejemplo |
---|---|---|
+ | sumado | A + El resultado de B es 30 |
- | restado | A - El resultado de B es -10 |
* | multiplicado por | A * El resultado de B es 200 |
/ | dividido por | B / El resultado de A es 2 |
% | resto | El resultado de B % A es 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) ); } }
执行以上代码,输出结果为:
$ scalac Test.scala $ scala Test a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5
La siguiente tabla enumera los operadores de relacion soportados por Scala.
Supongamos que la variable A es 10,B es 20:
运算符 | Descripción | Ejemplo |
---|---|---|
== | igual a | (A == B) operacion resultante es falso |
!= | distinto de | (A != B) operacion resultante es verdadero |
> | mayor que | (A > B) operacion resultante es falso |
< | menor que | (A < B) operacion resultante es verdadero |
>= | mayor o igual que | (A >= B) operacion resultante es falso |
<= | menor o igual que | (A <= B) operacion resultante es verdadero |
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)); } }
执行以上代码,输出结果为:
$ scalac Test.scala $ scala Test a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
La tabla a continuación enumera los operadores lógicos admitidos por Scala.
Supongamos que la variable A es 1, B es 0:
运算符 | Descripción | Ejemplo |
---|---|---|
&& | AND lógico | El resultado de la operación (A && B) es false |
|| | OR lógico | El resultado de la operación (A || B) es true |
! | Negación lógica | El resultado de la operación !(A && B) es 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)); } }
执行以上代码,输出结果为:
$ scalac Test.scala $ scala Test a && b = false a || b = true !(a && b) = true
Los operadores de bits se utilizan para operar con bits, ~,&,|,^ respectivamente son negación, AND de bits, OR de bits y XOR de bits, como se muestra en el siguiente ejemplo:
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 |
Si se especifica A = 60; y B = 13; Los binarios de dos variables correspondientes son:
A = 0011 1100 B = 0000 1101 -------Operaciones de bits---------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011
Las reglas de operadores de bits en Scala son las siguientes:
运算符 | Descripción | Ejemplo |
---|---|---|
& | Operador de AND de bits | (a & b) resultado de salida 12 ,interpretación binaria: 0000 1100 |
| | Operador de OR de bits | (a | b) resultado de salida 61 , interpretación binaria: 0011 1101 |
^ | Operador de XOR de bits | (a ^ b) resultado de salida 49 , interpretación binaria: 0011 0001 |
~ | Operador de negación de bits | Resultado de salida (~a ) -61 , interpretación binaria: 1100 0011, en la forma de complemento a dos de un número binario con signo. |
<< | Operador de desplazamiento a la izquierda | a << 2 Resultados de salida 240, interpretación binaria: 1111 0000 |
>> | Operador de desplazamiento a la derecha | a >> 2 Resultados de salida 15 ,interpretación binaria: 0000 1111 |
>>> | desplazamiento a la derecha sin signo | A >>>2 Resultados de salida 15, interpretación binaria: 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 ); } }
执行以上代码,输出结果为:
$ 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 continuación se muestra una lista de los operadores de asignación admitidos por el lenguaje Scala:
运算符 | Descripción | Ejemplo |
---|---|---|
= | operación de asignación simple, especifica que el operando de la derecha se asigna al operando de la izquierda | C = A + B asigna A + asignar el resultado de la operación de B a C |
+= | asignación después de la adición, que asigna la suma de ambos operandos a la izquierda | C += A equivalente a C = C + A |
-= | asignación después de la resta, que asigna la diferencia de ambos operandos a la izquierda | C -= A equivalente a C = C - A |
*= | asignación después de la multiplicación, que asigna el producto de ambos operandos a la izquierda | C *= A equivalente a C = C * A |
/= | asignación después de la división, que asigna el cociente de ambos operandos a la izquierda | C /= A equivalente a C = C / A |
%= | asignación después de la operación de módulo, que asigna el módulo de ambos operandos a la izquierda | C %= A es equivalente a C = C % A |
<<= | asignación después de la operación de desplazamiento a la izquierda bit a bit | C <<= 2 equivalente a C = C << 2 |
>>= | asignación después de la operación de desplazamiento a la derecha bit a bit | C >>= 2 equivalente a C = C >> 2 |
&= | asignación después de la operación de AND bit a bit | C &= 2 equivalente a C = C & 2 |
^= | asignación después de la operación de XOR bit a bit | C ^= 2 equivalente a C = C ^ 2 |
|= | asignación después de la operación 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 ); } }
执行以上代码,输出结果为:
$ 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
运算符优先级取决于所属的运算符组,它会影响算式的计算。
示例: x = 7 + 3 * 2; 这里, x 计算结果为 13,而不是 20,因为乘法(*)高于加法(+),所以它先计算 3*2 再加上 7。
查看以下表格,优先级从上到下依次递减,最上面具有最高的优先级,逗号操作符具有最低的优先级。
类别 | 运算符 | 关联性 |
---|---|---|
1 | () [] | 从左到右 |
2 | ! ~ | 从右到左 |
3 | * / % | 从左到右 |
4 | + - | 从左到右 |
5 | >> >>> << | 从左到右 |
6 | > >= < <= | 从左到右 |
7 | == != | 从左到右 |
8 | & | 从左到右 |
9 | ^ | 从左到右 |
10 | | | 从左到右 |
11 | && | 从左到右 |
12 | || | 从左到右 |
13 | = += -= *= /= %= >>= <<= &= ^= |= | 从右到左 |
14 | , | 从左到右 |