Java fornisce due interessanti operatori booleani non presenti nella maggior parte degli altri linguaggi per computer. Queste versioni secondarie di AND e OR sono note come operatori logici di cortocircuito . Come puoi vedere dalla tabella precedente, l'operatore OR risulta vero quando A è vero, indipendentemente da cosa sia B.
Allo stesso modo, l'operatore AND risulta falso quando A è falso, indipendentemente da cosa sia B. Se usi l'estensione||
&&
moduli e , invece di |
e&
moduli di questi operatori, Java non si preoccuperà di valutare solo l'operando di destra. Ciò è molto utile quando l'operando di destra dipende dal fatto che quello di sinistra sia vero o falso per funzionare correttamente.
Ad esempio, il seguente frammento di codice mostra come sfruttare la valutazione logica di cortocircuito per essere sicuri che un'operazione di divisione sarà valida prima di valutarla:
if ( denom != 0 && num / denom >10)
Poiché la forma di cortocircuito di AND (&&
viene utilizzata la ), non vi è alcun rischio di causare un'eccezione di runtime dalla divisione per zero. Se questa riga di codice fosse scritta utilizzando la &
versione singola di AND, entrambi i lati dovrebbero essere valutati, causando un'eccezione di runtime quando denom
è zero.
È pratica standard utilizzare le forme di cortocircuito di AND e OR nei casi che coinvolgono la logica booleana, lasciando le versioni a carattere singolo esclusivamente per operazioni bit per bit. Tuttavia, ci sono eccezioni a questa regola. Ad esempio, considera la seguente dichiarazione:
if ( c==1 & e++ < 100 ) d = 100;
Qui, l'utilizzo di un singolo &
garantisce che l'operazione di incremento verrà applicata a e
se c
è uguale a 1 o meno.