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

Opérateurs Scala

An operator is a symbol used to tell the compiler to perform the specified mathematical and logical operations.

Scala contains a wealth of built-in operators, including the following types:

  • Arithmetic operators

  • Relational operators

  • Opérateurs logiques

  • Opérateurs de bit

  • Opérateurs d'affectation

Next, we will introduce the application of the above various operators in detail.

Arithmetic operators

The following table lists the arithmetic operators supported by Scala.

Assumons que la variable A est 10, B is 20:

OpérateursDescriptionExemple
+plus signA + B operation result is 30
-minus signA - B operation result is -10
*multiplication signA * B operation result is 200
/division signB / A operation result is 2
%remainderB % A operation result is 0

Exemple en ligne

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

Exécuter le code suivant, le résultat est :

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

Relational operators

The following table lists the relational operators supported by Scala.

Assumons que la variable A est 10, B is 20:

OpérateursDescriptionExemple
==equal to(A == B) operation result is false
!=not equal to(A != B) operation result is true
>greater than(A > B) operation result is false
<less than(A < B) operation result is true
>=greater than or equal to(A >= B) operation result is false
<=less than or equal to(A <= B) operation result is true

Exemple en ligne

Exemple

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

Exécuter le code suivant, le résultat est :

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

Opérateurs logiques

Le tableau suivant liste les opérateurs logiques pris en charge par Scala.

Assumons que la variable A est 1B est 0 :

OpérateursDescriptionExemple
&&ET logiqueRésultat de l'opérateur (A && B) est false
||OU logiqueRésultat de l'opérateur (A || B) est true
!Non logiqueRésultat de l'opérateur !(A && B) est true

Exemple en ligne

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

Exécuter le code suivant, le résultat est :

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

Opérateurs de bit

Les opérateurs de bit opèrent sur les bits, ~,&,|,^ représentent respectivement la négation, le ET bit à bit, l'OU bit à bit et l'XOR bit à bit, comme illustré ci-dessous :

pqp & qp | qp ^ q
00000
01011
11110
10011

Si A est spécifié : 60; et B = 13; Les binaires des deux variables sont :

A = 0011 1100
B = 0000 1101
-------Opérations bit à bit----------
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~A = 1100 0011

Les règles des opérations binaires en Scala sont les suivantes :

OpérateursDescriptionExemple
&Opérateur de ET binaire(a & b) Résultat de la sortie 12 ,Interprétation binaire: 0000 1100
|Opérateur de OU binaire(a | b) Résultat de la sortie 61 interprétation binaire : 0011 1101
^Opérateur de XOR binaireRésultat de la sortie (a ^ b) 49 interprétation binaire : 0011 0001
~Opérateur de négation binaireRésultat de la sortie (~a ) -61 interprétation binaire : 1100 0011dans la forme de complément d'un nombre binaire signé.
<<Opérateur de déplacement à gauchea << 2 Résultat de la sortie 240, interprétation binaire : 1111 0000
>>Opérateur de déplacement à droitea >> 2 Résultat de la sortie 15 ,Interprétation binaire: 0000 1111
>>>Déplacement à droite sans signeA >>>2 Résultat de la sortie 15, Interprétation binaire: 0000 1111

Exemple en ligne

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

Exécuter le code suivant, le résultat est :

$ 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

Opérateurs d'affectation

Voici les opérateurs d'affectation pris en charge par la langue Scala :

OpérateursDescriptionExemple
=Opération d'affectation simple, en spécifiant l'opérande de droite pour affecter à l'opérande de gauche.C = A + B affecte A + L'opération de B est affectée à C
+=Affectation après l'addition, en affectant la somme des opérandes de chaque côté à l'opérande de gauche.C += A est équivalent à C = C + A
-=Affectation après la soustraction, en affectant la différence des opérandes de chaque côté à l'opérande de gauche.C -= A est équivalent à C = C - A
*=Affectation après la multiplication, en affectant le produit des opérandes de chaque côté à l'opérande de gauche.C *= A est équivalent à C = C * A
/=Affectation après la division, en affectant le quotient de la division des opérandes de chaque côté à l'opérande de gauche.C /= A est équivalent à C = C / A
%=Affectation après le modulo, en affectant le reste de la division des opérandes de chaque côté à l'opérande de gauche.C %= A est équivalent à C = C % A
<<=Affectation après le déplacement binaire à gaucheC <<= 2 Équivalent à C = C << 2
>>=Affectation après le déplacement binaire à droiteC >>= 2 Équivalent à C = C >> 2
&=Affectation après l'opérateur de ET binaireC &= 2 Équivalent à C = C & 2
^=Affectation après l'opérateur de XOR binaireC ^= 2 Équivalent à C = C ^ 2
|=Affectation après l'opérateur de OU binaireC |= 2 Équivalent à C = C | 2

Exemple en ligne

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

Exécuter le code suivant, le résultat est :

$ 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

La priorité des opérateurs dépend du groupe d'opérateurs auquel ils appartiennent, ce qui affecte le calcul de l'expression.

Exemple : x = 7 + 3 * 2; ici, le résultat de x est 13, et non 20, car la multiplication (*) a une priorité supérieure à l'addition (+) donc il calcule d'abord 3*2 Ajouter en plus 7.

Voyez le tableau suivant, la priorité diminue de haut en bas, le plus haut en haut a la priorité la plus élevée, et l'opérateur virgule a la priorité la plus basse.

CatégorieOpérateursAssociation
1() []De gauche à droite
2!  ~De droite à gauche
3*  /  %De gauche à droite
4+  -De gauche à droite
5>>> >>> <<De gauche à droite
6> >=  < <=De gauche à droite
7==  !=De gauche à droite
8&De gauche à droite
9^De gauche à droite
10|De gauche à droite
11&&De gauche à droite
12||De gauche à droite
13=  +=  -=  *=  /=  %= >>=  <<=  &=  ^=   |=De droite à gauche
14,De gauche à droite