Gli operatori logici in Java

Gli operatori logici in Java sono i seguenti:

&& AND logico A&&B
|| OR logico A||B
^ XOR A^B
! NOT logico A!
& AND (bitwise) A&B
| OR (bitwise) A|B
A?B:C if A then B else C A?B:C

Esempi pratici

Esempio 1

Se le espressioni A e B sono vere ( AND ), il programma scrive "ok" sullo schermo

if (A&&B) System.out.println(" ok " );

Esempio 2

Se almeno una espressione tra A e B è vera ( OR ), il programma scrive "ok" sullo schermo.

if (A||B) System.out.println(" ok " );

Esempio 3

Se l'espressione (A==B) è falsa, l'operatore NOT (!) la ribalta facendola diventare vera e il programma scrive "ok" sullo schermo.

if (!(A==B)) System.out.println(" ok " );

Esempio 4

Se le variabili A e B sono diverse ( XOR ) il programma scrive "ok" sullo schermo.

if (A^B) System.out.println(" ok " );

La differenza tra & e &&

Gli operatori logici & e && sono l'operatore AND. Quindi restituiscono lo stesso risultato.

Tuttavia, c'è una differenza molto importante, & è bitwise mentre && è short-circuit.

Operatori bitwise

L'operatore AND (&) verifica tutte le condizioni, anche dopo averne trovata una falsa.

A & B

Se A è falsa, l'operatore & verifica comunque se B è vera.

Nota. Gli operatori bitwise sono utili eseguire le operazioni sui bit.

Operatori short-circuit

L'operatore AND con valutazione (&&) non verifica tutte le condizioni, se almeno una è falsa.

A && B

In questo caso, se A è falsa, l'operatore && non verifica se B è vera.

Un esempio pratico

Se le espressioni (B!=0) e (A/B>0) sono vere, il programma scrive "ok" sullo schermo.

if (( B != 0 ) && ( A/B > 0 )) System.out.println(" ok " );

Se la prima espressione (B!=0) è falsa, il programma non verifica la seconda espressione (A/B>0).

E questo evita un messaggio di errore, essendo A/B una divisione per zero se B=0.

Viceversa, utilizzando l'operatore AND (&) bitwise

if (( B != 0 ) & ( A/B > 0 )) System.out.println(" ok " );

Se la prima espressione (B!=0) è falsa, il programma verifica anche la seconda espressione (A/B>0).

Gli operatori ? e : in Java

Gli operatori ? e : in Java mi consentono di scrivere un'istruzione condizionata (if) in forma più abbreviata.

espressione ? valore1 : valore2

Se l'espressione condizionale è vera, il programma usa il valore1 ( then ).

Viceversa, se l'espressione è falsa usa il valore2 ( else )

Attenzione. Questa forma abbreviata della IF funziona soltanto per assegnare un valore a una variabile. Non può essere usata per eseguire istruzioni o blocchi di istruzioni.

Un esempio pratico

In questo programma verifico qual è il valore massimo delle variabili A e B.

Le confronto e assegno il valore maggiore alla variabile MAX.

if (A > B) {
MAX = A;
}
ELSE {
MAX = B;
}

Con gli operatori logici posso scrivere la stessa istruzione in forma più abbreviata.

MAX = (A > B) ? A : B;

Il risultato è sempre lo stesso.

E così via

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Java