2014-10-15 14 views
6

In java, esiste un operatore logico OR (||) e un operatore AND logico (&&). Esiste un operatore logical XOR? Ho provato ^^ ma non funziona.Qual è l'operatore logico xor in java?

+0

Cosa farebbe un xor logico? C'è un xor bit a bit che è ^. –

+6

Un xor logico (A logical_xor B) è praticamente solo 'A! = B' – nos

risposta

18

L'operatore logico XOR esiste in Java ed è scritto ^.

per ottenere la giusta terminologia, in Java:

  • &, | e ^ sono chiamati bit per bit o logici operatori, a seconda delle tipologie di loro argomentazioni;
  • && e || sono chiamati operatori condizionale.

Per dettagli, vedere JLS § 15.22. Bitwise and Logical Operators in poi.

Non esiste un equivalente diretto per && e || per XOR. L'unico motivo e || esiste come operatori separati da & e | è il loro short-circuiting behaviour (è per questo che vengono chiamati "condizionali") e XOR non può essere cortocircuitato.

+0

Interessante. La tabella di _The Java ™ Tutorials_ su [Operators] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html) fa riferimento a "operatori logici" distinti da "operatori bit a bit", tuttavia [ Operatori di uguaglianza, relazionali e condizionali] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts/op2.html) si riferisce a "operatori condizionali" come dici tu. –

+0

Ah, penso di capire il conflitto. In realtà penso che "operatore logico" significhi che i valori booleani vengono confrontati. Pertanto gli operatori di condizione sono operatori logici e gli operatori bit a bit possono essere utilizzati anche come operatori logici. Ecco perché il JLS dice "Operatori bit a bit e logici" quando ci si riferisce a '&', '|', e '^'. Quindi non penso che sarebbe scorretto fare riferimento a '&&' e '||' (gli operatori condizionali) come operatori logici. –