Saltar al contenido

Cortocircuito del operador lógico de Java

Revisamos de forma exhaustivamente cada una de las reseñas de nuestro sitio web con el objetivo de enseñarte siempre la información más veraz y certera.

Solución:

los && y || los operadores “cortocircuitan”, lo que significa que no evalúan el lado derecho si no es necesario.

los & y | Los operadores, cuando se usan como operadores lógicos, siempre evalúan ambos lados.

Solo existe un caso de cortocircuito para cada operador, y son:

  • false && ... – no es necesario saber cuál es el lado derecho porque el resultado sólo puede ser false independientemente del valor que haya
  • true || ... – no es necesario saber cuál es el lado derecho porque el resultado sólo puede ser true independientemente del valor que haya

Comparemos el comportamiento en un ejemplo simple:

public boolean longerThan(String input, int length) 
    return input != null && input.length() > length;


public boolean longerThan(String input, int length) 
    return input != null & input.length() > length;

La segunda versión utiliza el operador sin cortocircuito. & y lanzará un NullPointerException si input es nullpero la primera versión volverá false sin excepción

SET A utiliza operadores booleanos de cortocircuito.

Lo que significa ‘cortocircuitar’ en el contexto de los operadores booleanos es que para un conjunto de booleanos b1, b2, …, bn, las versiones de cortocircuito dejarán de evaluarse tan pronto como el primero de estos booleanos sea true (||) o false (&&).

Por ejemplo:

// 2 == 2 will never get evaluated because it is already clear from evaluating
// 1 != 1 that the result will be false.
(1 != 1) && (2 == 2)

// 2 != 2 will never get evaluated because it is already clear from evaluating
// 1 == 1 that the result will be true.
(1 == 1) || (2 != 2)

En términos sencillos, cortocircuito significa detener la evaluación una vez que sepa que la respuesta ya no puede cambiar. Por ejemplo, si está evaluando una cadena de lógica ANDs y descubres un FALSE en medio de esa cadena, sabes que el resultado va a ser false, sin importar cuáles sean los valores del resto de las expresiones de la cadena. Lo mismo ocurre con una cadena de ORs: una vez que descubres un TRUEsabe la respuesta de inmediato, por lo que puede omitir la evaluación del resto de las expresiones.

Le indicas a Java que quieres hacer un cortocircuito usando && en vez de & y || en vez de |. El primer conjunto en su publicación es un cortocircuito.

Tenga en cuenta que esto es más que un intento de ahorrar algunos ciclos de CPU: en expresiones como esta

if (mystring != null && mystring.indexOf('+') > 0) 
    ...

un cortocircuito significa una diferencia entre el funcionamiento correcto y un bloqueo (en el caso de que mystring esté null).

Al final de la artículo puedes encontrar las notas de otros sys admins, tú igualmente tienes la opción de dejar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *