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

Scala运算符

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.

Operadores aritmeticos

La siguiente tabla enumera los operadores aritmeticos soportados por Scala.

Supongamos que la variable A es 10,B es 20:

运算符DescripciónEjemplo
+sumadoA + El resultado de B es 30
-restadoA - El resultado de B es -10
*multiplicado porA * El resultado de B es 200
/dividido porB / El resultado de A es 2
%restoEl resultado de B % A es 0

Ejemplo en línea

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

Operadores de relacion

La siguiente tabla enumera los operadores de relacion soportados por Scala.

Supongamos que la variable A es 10,B es 20:

运算符DescripciónEjemplo
==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

Ejemplo en línea

Ejemplo

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

Operadores lógicos

La tabla a continuación enumera los operadores lógicos admitidos por Scala.

Supongamos que la variable A es 1, B es 0:

运算符DescripciónEjemplo
&&AND lógicoEl resultado de la operación (A && B) es false
||OR lógicoEl resultado de la operación (A || B) es true
!Negación lógicaEl resultado de la operación !(A && B) es true

Ejemplo en línea

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

Operadores de bits

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:

pqp & qp | qp ^ q
00000
01011
11110
10011

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ónEjemplo
&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 bitsResultado 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 izquierdaa << 2 Resultados de salida 240, interpretación binaria: 1111 0000
>>Operador de desplazamiento a la derechaa >> 2 Resultados de salida 15 ,interpretación binaria: 0000 1111
>>>desplazamiento a la derecha sin signoA >>>2 Resultados de salida 15, interpretación binaria: 0000 1111

Ejemplo en línea

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

Operadores de asignación

A continuación se muestra una lista de los operadores de asignación admitidos por el lenguaje Scala:

运算符DescripciónEjemplo
=operación de asignación simple, especifica que el operando de la derecha se asigna al operando de la izquierdaC = 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 izquierdaC += A equivalente a C = C + A
-=asignación después de la resta, que asigna la diferencia de ambos operandos a la izquierdaC -= A equivalente a C = C - A
*=asignación después de la multiplicación, que asigna el producto de ambos operandos a la izquierdaC *= A equivalente a C = C * A
/=asignación después de la división, que asigna el cociente de ambos operandos a la izquierdaC /= 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 izquierdaC %= A es equivalente a C = C % A
<<=asignación después de la operación de desplazamiento a la izquierda bit a bitC <<= 2 equivalente a C = C << 2
>>=asignación después de la operación de desplazamiento a la derecha bit a bitC >>= 2 equivalente a C = C >> 2
&=asignación después de la operación de AND bit a bitC &= 2 equivalente a C = C & 2
^=asignación después de la operación de XOR bit a bitC ^= 2 equivalente a C = C ^ 2
|=asignación después de la operación de OR bit a bitC |= 2 equivalente a C = C | 2

Ejemplo en línea

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,从左到右