Java fornece dois operadores booleanos interessantes não encontrados na maioria das outras linguagens de computador. Essas versões secundárias de AND e OR são conhecidas como operadores lógicos de curto-circuito . Como você pode ver na tabela anterior, o operador OR resulta em verdadeiro quando A é verdadeiro, não importa o que B seja.
Da mesma forma, o operador AND resulta em falso quando A é falso, não importa o que B seja. Se você usar os formulários ||e &&, em vez dos formulários |e &desses operadores, o Java não se preocupará em avaliar apenas o operando direito. Isso é muito útil quando o operando da direita depende do esquerdo ser verdadeiro ou falso para funcionar corretamente.
Por exemplo, o fragmento de código a seguir mostra como você pode aproveitar as vantagens da avaliação lógica de curto-circuito para ter certeza de que uma operação de divisão será válida antes de avaliá-la:
if ( denom != 0 && num / denom >10)
Como a forma de curto-circuito de AND ( &&) é usada, não há risco de causar uma exceção de tempo de execução ao dividir por zero. Se esta linha de código foi escrita usando a única &versão de AND, ambos os lados teriam que ser avaliados, causando uma exceção de tempo de execução quando denomfor zero.
É prática padrão usar as formas de curto-circuito de AND e OR em casos envolvendo lógica booleana, deixando as versões de um caractere exclusivamente para operações bit a bit. No entanto, existem excepções a esta regra. Por exemplo, considere a seguinte declaração:
if ( c==1 & e++ < 100 ) d = 100;
Aqui, usar um único &garante que a operação de incremento será aplicada ese cfor igual a 1 ou não.