operatore Scala
Un operatore è un simbolo, usato per dire al compilatore di eseguire un determinato operazioni matematiche e logiche.
Scala ricchi operatori built-in, tra cui i seguenti tipi:
Gli operatori aritmetici
Operatori relazionali
Operatori logici
operatori bit per bit
Operatori di assegnazione
In seguito, spiegheremo a voi più che l'applicazione dei vari operatori.
Gli operatori aritmetici
Nella tabella seguente sono elencati gli operatori aritmetici supporto Scala.
Una variabile assunto come 10, B 20:
operatori | descrizione | Esempi |
---|---|---|
+ | più | Un risultato dell'operazione + B è di 30 |
- | meno | A - B risultato dell'operazione è -10 |
* | segno di moltiplicazione | A * risultato dell'operazione è di 200 B |
/ | Segno di divisione | B / A risultato dell'operazione è 2 |
% | resto | B% un risultato di calcolo è 0 |
Esempi
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) ); } }
L'attuazione del codice di cui sopra, l'output è:
$ scalac Test.scala $ scala Test a + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5
Operatori relazionali
La seguente tabella elenca Scala supporta operatori relazionali.
Una variabile assunto come 10, B 20:
operatori | descrizione | Esempi |
---|---|---|
== | pari | (A == B) risultato dell'operazione è falso |
! = | Non è uguale | (A! = B) risultato dell'operazione è vero |
> | maggiore di | (A> B) risultato dell'operazione è falso |
< | meno | (A <B) risultato dell'operazione è vero |
> = | Maggiore o uguale | (A> = B) il risultato dell'operazione è falsa |
<= | Minore o uguale | (A <= B) risultato dell'operazione è vero |
Esempi
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) ); } }
L'attuazione del codice di cui sopra, l'output è:
$ scalac Test.scala $ scala Test a == b = false a != b = true a > b = false a < b = true b >= a = true b <= a = false
Operatori logici
Nella tabella seguente sono elencati i Scala supporta gli operatori logici.
Una variabile assunta come 1, B è 0:
operatori | descrizione | Esempi |
---|---|---|
&& | Logica e | (A && B) risultato dell'operazione è falso |
|| | logico o | (A || B) risultato dell'operazione è vero |
! | NOT logico | ! (A && B) risultato dell'operazione è vero |
Esempi
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) ); } }
L'attuazione del codice di cui sopra, l'output è:
$ scalac Test.scala $ scala Test a && b = false a || b = true !(a && b) = true
operatori bit per bit
Bit per bit Operatori bit utilizzati per operare, ~, &, |, ^ sono stati negato, e il bit, o con bit e, operazione di XOR bit a bit con i seguenti esempi tabella:
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 |
Se A = 60 e B = 13; due variabili corrispondente binario è:
A = 0011 1100 B = 0000 1101 -------位运算---------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011
La regola Scala bit a bit come segue:
operatori | descrizione | Esempi |
---|---|---|
& | Bitwise operatore AND | (A & B) Uscita 12, spiegazione binario: 0000 1100 |
| | Operatore OR | (A | B) Uscita 61, spiegazione binario: 00.111.101 |
^ | OR di bit esclusivo dell'operatore | (A ^ b) l'uscita di 49, spiegazione binario: 00.110.001 |
~ | operatori bit per bit | (~ A) -61 uscita, spiegazione binaria: 1100 0011 in forma simbolica complementare numero binario. |
<< | operatore di telefonia mobile di sinistra | un << 2 uscite 240 interpretazione binaria: 11110000 |
>> | Operatori Mobili destra | un >> 2 uscita 15, spiegazione binario: 0000 1111 |
>>> | Unsigned spostamento a destra | A >>> 2 uscite 15 Spiegazione binario: 0000 1111 |
Esempi
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; /* 215 = 1111 */ println("a >> 2 = " + c ); c = a >>> 2; /* 215 = 0000 1111 */ println("a >>> 2 = " + c ); } }
L'attuazione del codice di cui sopra, l'output è:
$ 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
Operatori di assegnazione
Di seguito sono elencati l'operatore Scala lingua assegnazione supporto:
operatori | descrizione | Esempi |
---|---|---|
= | operatore di assegnazione Semplice, specifica l'operando di destra assegnato al operando a sinistra. | C risultato = A + B + A operazione B è assegnato a C |
+ = | L'aggiunta dopo l'assegnazione, i lati sinistro e destro del operando prima di aggiungere assegnati al operando a sinistra. | C + = A corrisponde a C = C + A |
- = | Dopo assegnazione sottrazione, gli operandi sinistro e destro su entrambi i lati l'operando a sinistra dopo la sottrazione assegnati. | C - = A corrisponde a C = C - A |
* = | Poi moltiplicando l'assegnazione, i lati sinistro e destro degli operandi si moltiplicano prima assegnazione al operando a sinistra. | C * = A corrisponde a C = C * A |
/ = | Diviso dopo l'assegnazione, i lati sinistro e destro del operando divisione dopo l'assegnazione alla operando a sinistra. | C / = A è equivalente C = C / A |
% = | Resto dopo l'assegnazione, i lati sinistro e destro del operando rimanente dopo l'assegnazione alla operando a sinistra. | C% = A è equivalente a C = C% A |
<< = | Sinistra bit a bit dopo l'assegnazione | C << = 2 corrisponde a C = C << 2 |
>> = | Bit a bit a destra dopo la cessione | C >> = 2 è equivalente a C = C >> 2 |
& = | AND bit a bit incarico dopo l'operazione | C & = 2 è equivalente C = C & 2 |
^ = | OR di bit esclusivo dell'operatore e poi assegnato | C ^ = 2 è equivalente a C = C ^ 2 |
| = | OR bit a bit assegnazione dopo | C | = 2 corrisponde a C = C | 2 |
Esempi
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 >>= 2 ; println("c >>= a = " + c ); c &= a ; println("c &= 2 = " + c ); c ^= a ; println("c ^= a = " + c ); c |= a ; println("c |= a = " + c ); } }
L'attuazione del codice di cui sopra, l'output è:
$ 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 = 1 c &= 2 = 0 c ^= a = 10 c |= a = 10
precedenza Operatore
In una espressione può contenere una pluralità di differenti operatori di collegamento con diversi tipi di dati degli oggetti dati, dal momento che l'espressione ha una varietà di operazioni, un diverso ordine di operazioni può avere risultati diversi, anche errore di funzionamento errato, perché quando quando un'espressione contenente una serie di operazioni, secondo un certo ordine deve essere combinata in modo da garantire la razionalità e correttezza dei risultati, l'unicità di funzionamento.
La priorità in ordine decrescente dall'alto verso il basso, la parte superiore ha la priorità più alta, l'operatore virgola ha la priorità più bassa.
Lo stesso livello di priorità, secondo l'ordine di binding di calcolo. La maggior parte delle operazioni sono calcolate da sinistra a destra, solo tre priorità sono da destra a sinistra combinazione, sono operatori unari, operatori condizionali, operatori di assegnazione.
Le priorità di base devono ricordare:
- puntatore ottimale, unario di operatori binari. Come il segno.
- Prima moltiplicazione e divisione (modulo) dopo la sottrazione.
- Prima operazione shift aritmetico dopo l'ultimo bit. Si prega di prestare particolare attenzione a: << 1 2 & 3 + 7 è pari a (1 << (3 + 2)) e 7
- operazione logica calcolo finale
Tipo Operatore | operatori | direzione di rilegatura |
---|---|---|
valutazione delle espressioni | () []. Espr ++ expr-- | Da sinistra a destra |
operatore unario | * & + -! ~ ++ Espr --expr * /% + - >> << <> <=> = ==! = | Da destra a sinistra |
operatori bit per bit | & ^ | && || | Da sinistra a destra |
operatore ternario | ?: | Da destra a sinistra |
Operatori di assegnazione | = + = - = * = / =% = >> = << = & = ^ = | = | Da destra a sinistra |
virgola | , | Da sinistra a destra |