Já que os operadores de curto-circuito são, em alguns casos, mais eficientes do que seus equivalentes comuns, por que Java oferece os operadores AND e OR comuns?
Em alguns casos, você pode querer que os dois operandos de uma operação AND ou OR sejam avaliados devido aos efeitos colaterais produzidos.
Na primeira instrução if, i é incrementada independentemente do sucesso da condição.
Com o operador de curto-circuito, i não é incrementada quando o primeiro operando é falso.
A lição aprendida é que ao esperar que o operando do lado direito de uma operação AND ou OR seja avaliado, deve-se usar versões dessas operações em Java que não sejam de curto-circuito.
Top comments (1)
Gostei da explicação e do exemplo indicando o efeito colateral.
Eu gostaria de adicionar algumas informações:
Estes operadores são chamados de Bitwise and Logical Operators e são especialmente úteis quando a gente trabalha com bits.
Quando os 2 operandos são booleanos, ele age como vc descreveu e produz um booleano.
Mas quando os 2 operandos são de tipos integrais, eles produzem um tipo também integral que é o resultado de aplicar a operação sobre cada bit dos operandos. Por exemplo: