Java proporciona dos operadores booleanos interesantes que no se encuentran en la mayoría de los otros lenguajes informáticos. Estas versiones secundarias de AND y OR se conocen como operadores lógicos de cortocircuito. . Como puede ver en la tabla anterior, el operador OR da como resultado verdadero cuando A es verdadero, sin importar lo que sea B.
De manera similar, el operador AND da como resultado falso cuando A es falso, sin importar lo que sea B. Si usa los formularios ||
y &&
, en lugar de |
y&
formas de estos operadores, Java no se molestará en evaluar solo el operando de la derecha. Esto es muy útil cuando el operando de la derecha depende de que el de la izquierda sea verdadero o falso para funcionar correctamente.
Por ejemplo, el siguiente fragmento de código muestra cómo puede aprovechar la evaluación lógica de cortocircuito para asegurarse de que una operación de división será válida antes de evaluarla:
if ( denom != 0 && num / denom >10)
Dado que &&
se usa la forma de cortocircuito de AND ( ), no hay riesgo de causar una excepción en tiempo de ejecución de dividir por cero. Si esta línea de código se escribiera usando la &
versión única de AND, ambos lados tendrían que ser evaluados, provocando una excepción en tiempo de ejecución cuando denom
es cero.
Es una práctica estándar usar las formas de cortocircuito de Y y O en casos que involucran lógica booleana, dejando las versiones de un solo carácter exclusivamente para operaciones bit a bit. Sin embargo, hay excepciones para esta regla. Por ejemplo, considere la siguiente declaración:
if ( c==1 & e++ < 100 ) d = 100;
Aquí, el uso de un solo &
asegura que la operación de incremento se aplicará a e
si c
es igual a 1 o no.