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

Scala Operators

Ein Operator ist ein Symbol, das dem Compiler mitteilt, welche spezifischen mathematischen und logischen Operationen ausgeführt werden sollen.

Scala verfügt über eine reiche Sammlung von eingebauten Operatoren, einschließlich der folgenden Typen:

  • Arithmetische Operatoren

  • Beziehungsoperatoren

  • Logische Operationen

  • Bitoperationen

  • Zuweisungsoperator

Nachfolgend werden wir die Anwendung dieser verschiedenen Operatoren im Detail erläutern.

Arithmetische Operatoren

Die nachstehende Tabelle zeigt die arithmetischen Operatoren, die Scala unterstützt.

Angenommen, die Variable A ist 10,B ist 20:

OperatorsBeschreibungBeispiel
+AdditionssymbolA + B Berechnungsergebnis ist 30
-SubtraktionssymbolA - B Berechnungsergebnis ist -10
*MultiplikationssymbolA * B Berechnungsergebnis ist 200
/DivisionssymbolB / A Berechnungsergebnis ist 2
%Rest der DivisionB % A Berechnungsergebnis ist 0

Online-Beispiel

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

After executing the above code, the output result is:

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

Beziehungsoperatoren

Die nachstehende Tabelle zeigt die Relationsoperatoren, die Scala unterstützt.

Angenommen, die Variable A ist 10,B ist 20:

OperatorsBeschreibungBeispiel
==gleich(A == B) Berechnungsergebnis ist falsch
!=ungleich(A != B) Berechnungsergebnis ist wahr
>größer(A > B) Berechnungsergebnis ist falsch
<kleiner(A < B) Berechnungsergebnis ist wahr
>=größer als oder gleich(A >= B) Berechnungsergebnis ist falsch
<=kleiner als oder gleich(A <= B) Berechnungsergebnis ist wahr

Online-Beispiel

Beispiel

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

After executing the above code, the output result is:

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

Logische Operationen

Die nachstehende Tabelle zeigt die logischen Operationen, die Scala unterstützt.

Angenommen, die Variable A ist 1, B ist 0:

OperatorsBeschreibungBeispiel
&&Logisches Und(A && B)运算结果为 false
||Logisches Oder(A || B)运算结果为 true
!Logisches Negation!(A && B)运算结果为 true

Online-Beispiel

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

After executing the above code, the output result is:

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

Bitoperationen

Bitoperationen werden verwendet, um auf die Binärbits zu operieren, ~, & , |, ^ sind die Inversions-, Bitweise AND-, Bitweise OR- und Bitweise EXklusiv-OR-Operationen, wie im folgenden Beispiel gezeigt:

pqp & qp | qp ^ q
00000
01011
11110
10011

Wenn A festgelegt ist: 60; und B = 13; Die binären Werte der beiden Variablen sind:

A = 0011 1100
B = 0000 1101
-------Bitoperationen----------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011

Die Bitoperationen in Scala lauten wie folgt:

OperatorsBeschreibungBeispiel
&Bitweise AND-Operator(a & b) Ausgaberesultat 12 ,Binärer Interpretation: 0000 1100
|Bitweise OR-Operator(a | b) Ausgaberesultat 61 , binäre Erklärung: 0011 1101
^Bitweise Exklusiv-OR-Operator(a ^ b) Ausgaberesultat 49 , binäre Erklärung: 0011 0001
~Bitweise Inversionsoperator(~a) Ausgaberesultat -61 , binäre Erklärung: 1100 0011, in der Komplementform eines signierten Binärzahls.
<<Linksbewegungsoperatora << 2 Ausgaberesultat 240, binäre Erklärung: 1111 0000
>>Rechtsbewegungsoperatora >> 2 Ausgaberesultat 15 ,Binärer Interpretation: 0000 1111
>>>Unsignierte RechtsverschiebungA >>>2 Ausgaberesultat 15, Binärer Interpretation: 0000 1111

Online-Beispiel

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

After executing the above code, the output result is:

$ 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

Zuweisungsoperator

Nachstehend sind die Zuweisungsoperator, die Scala unterstützt, aufgeführt:

OperatorsBeschreibungBeispiel
=Einfache Zuweisungsoperation, die rechte Operation zugewiesen wird.C = A + B gibt A + Der Berechnungsergebnis von B wird C zugewiesen
+=Addition und dann Zuweisung, die linken und rechten Operanden werden addiert und dann zugewiesen.C += A entspricht C = C + A
-=Subtraktion und dann Zuweisung, die linken und rechten Operanden werden subtrahiert und dann zugewiesen.C -= A entspricht C = C - A
*=Multiplikation und dann Zuweisung, die linken und rechten Operanden werden multipliziert und dann zugewiesen.C *= A entspricht C = C * A
/=Division und dann Zuweisung, die linken und rechten Operanden werden dividiert und dann zugewiesen.C /= A entspricht C = C / A
%=Restoperation und dann Zuweisung, die linken und rechten Operanden werden restbereinigt und dann zugewiesen.C %= A entspricht C = C % A
<<=Bitweise Linksverschiebung und dann ZuweisungC <<= 2 entspricht C = C << 2
>>=Bitweise Rechtsverschiebung und dann ZuweisungC >>= 2 entspricht C = C >> 2
&=Bitweise UND Operation und dann ZuweisungC &= 2 entspricht C = C & 2
^=Bitweise XOR Operation und dann ZuweisungC ^= 2 entspricht C = C ^ 2
|=Bitweise oder Operation und dann ZuweisungC |= 2 entspricht C = C | 2

Online-Beispiel

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

After executing the above code, the output result is:

$ 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

The precedence of operators depends on the operator group they belong to, which affects the calculation of the expression.

Example: x = 7 + 3 * 2; Here, the calculation result of x is 13, not 20, because multiplication(*) is higher than addition(+), so it calculates first 3*2 Plus 7.

See the following table, the priority decreases from top to bottom, the highest priority is at the top, and the comma operator has the lowest priority.

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