English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
The following table lists the arithmetic operators supported by Scala.
Assumons que la variable A est 10, B is 20:
Opérateurs | Description | Exemple |
---|---|---|
+ | plus sign | A + B operation result is 30 |
- | minus sign | A - B operation result is -10 |
* | multiplication sign | A * B operation result is 200 |
/ | division sign | B / A operation result is 2 |
% | remainder | B % A operation result is 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)); } }
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
The following table lists the relational operators supported by Scala.
Assumons que la variable A est 10, B is 20:
Opérateurs | Description | Exemple |
---|---|---|
== | 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 |
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
Le tableau suivant liste les opérateurs logiques pris en charge par Scala.
Assumons que la variable A est 1B est 0 :
Opérateurs | Description | Exemple |
---|---|---|
&& | ET logique | Résultat de l'opérateur (A && B) est false |
|| | OU logique | Résultat de l'opérateur (A || B) est true |
! | Non logique | Résultat de l'opérateur !(A && B) est 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) ; } }
Exécuter le code suivant, le résultat est :
$ scalac Test.scala $ scala Test a && b = false a || b = true !(a && b) = true
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 :
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 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érateurs | Description | Exemple |
---|---|---|
& | 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 binaire | Résultat de la sortie (a ^ b) 49 interprétation binaire : 0011 0001 |
~ | Opérateur de négation binaire | Ré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 à gauche | a << 2 Résultat de la sortie 240, interprétation binaire : 1111 0000 |
>> | Opérateur de déplacement à droite | a >> 2 Résultat de la sortie 15 ,Interprétation binaire: 0000 1111 |
>>> | Déplacement à droite sans signe | A >>>2 Résultat de la sortie 15, Interprétation binaire: 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 ); } }
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
Voici les opérateurs d'affectation pris en charge par la langue Scala :
Opérateurs | Description | Exemple |
---|---|---|
= | 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 à gauche | C <<= 2 Équivalent à C = C << 2 |
>>= | Affectation après le déplacement binaire à droite | C >>= 2 Équivalent à C = C >> 2 |
&= | Affectation après l'opérateur de ET binaire | C &= 2 Équivalent à C = C & 2 |
^= | Affectation après l'opérateur de XOR binaire | C ^= 2 Équivalent à C = C ^ 2 |
|= | Affectation après l'opérateur de OU binaire | C |= 2 Équivalent à 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 ); } }
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égorie | Opérateurs | Association |
---|---|---|
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 |