public class Cortocircuito { static boolean pruebal (int val) { System.out.println ("pruebal ( " + val + " ) " ); System.out.println ("resultado: " + (val < 1) ); return val < 1; } static boolean prueba2 (int val) { System.out.println ("prueba2 ( " + val + " ) " ); System.out.println ("resultado: " + (val < 2) ); return val < 2; } static boolean prueba3 (int val) { System.out.println ("prueba3 ( " + val + ") " ); System.out.println ("resultado: " + (val < 3) ); return val < 3; } public static void main (String[] args) { if (pruebal (0) && prueba2 (2) && prueba3 (2) ) System.out.println("La expresion es verdadera"); else System.out.println("La expresion es falsa"); } }Cada test lleva a cabo una comparación con el argumento pasado y devuelve verdadero o falso. También imprime información para mostrar lo que se está invocando. Las comprobaciones se usan en la expresión:
if (pruebal (0) && prueba2 (2) && prueba3 (2))Naturalmente uno podría pensar que se ejecutarían las tres pruebas, pero en la salida se muestra de otra forma:
La primera prueba produjo un resultado verdadero, de forma que la evaluación de la expresión
continúa. Sin embargo, el segundo test produjo un resultado falso. Puesto que esto significa que
toda la expresión va a ser falso ¿por qué continuar evaluando el resto de la expresión? Podría ser
costoso. Ésa es precisamente la razón para realizar un cortocircuito; es posible lograr un incremento
potencial de rendimiento si no es necesario evaluar todas las partes de la expresión lógica.
No hay comentarios:
Publicar un comentario