variable una tipo que ejemplos ejemplo declarar datos dato con comparar java

una - ¿Evalúa Java las condiciones restantes después de conocer el resultado booleano?



que es una variable de tipo boolean en netbeans (6)

El || y && operadores están en cortocircuito.

true || willNeverExecute(); false && willNeverExecute();

Es decir, si tengo una declaración que evalúa varias condiciones, por ejemplo, una declaración ''o'' como tal ...

if(isVeryLikely() || isSomewhatLikely() || isHardlyLikely()) { ... }

En el caso de que isVeryLikely() devuelva true en el tiempo de ejecución, ¿se isSomewhatLikely() y isHardlyLikely() ? ¿Qué tal si en lugar de métodos fueran booleanos estáticos?


La respuesta corta es que evaluará hasta que tenga suficiente para concluir si es T / F.

Hay algo llamado booleano en cortocircuito . Esencialmente intentará y evaluará solo lo que necesita (si usa los operadores && o ||) y la licencia. Puede aprovechar esto de varias maneras:

(a() || b())

  1. Si b () lanzaría una excepción, si a () es verdadero, entonces ni siquiera trataría de verificar el b (). Un tipo de mecanismo de verificación de cadena.

  2. Si las últimas evaluaciones consumen muchos recursos, puede moverlas al final de la evaluación (por ejemplo, b () tarda 10 veces más)

  3. Si la ruta más probable puede determinarse mediante una cláusula determinada, colóquela primero. Esto también aceleraría la ejecución.


Lo primero que debe tener en cuenta es que las sentencias condicionales de Java solo pueden tomar booleano, a diferencia de otros lenguajes como C / C ++ donde cualquier valor distinto de cero se evaluará como verdadero.

Dicho esto, hay 2 tipos de operadores, el primero se conoce como tipos de shor-circuit:

&& and ||

mientras que el otro son los tipos que NO son de cortocircuito:

& and |

Para los tipos de cortocircuito, una vez que se puede encontrar un resultado lógico como respuesta a la expresión, el resto de la declaración se abandonará. Para los tipos que no sean de cortocircuito, continuarán evaluando todas las condiciones.

Con esto en mente, lo que tienes:

if(isVeryLikely() || isSomewhatLikely() || isHardlyLikely()) { ... }

Java hará lo siguiente:

  1. Primero compruebe si isVeryLikely () devuelve verdadero. Si es verdadero, entonces no continuará más.
  2. Si isVeryLikely () devuelve false, invocar isSomewhatLikely () para ver si devuelve verdadero. Si es verdadero, nada más si se evalúa. Si es falso, pase a 3.
  3. isHardlyLikely () se invoca. Si es verdadero, la expresión completa es verdadera, de lo contrario es falsa, toda la expresión es falsa.

Todo el concepto que está preguntando es "¿Cómo evalúa Java las expresiones lógicas?" Buena pregunta :)

¡Espero eso ayude! ¡Aclamaciones!


No, Java usa la evaluación de cortocircuito en expresiones usando || y && . Mira here para más información.


Porque el || está en cortocircuito, la declaración se evaluará como verdadera tan pronto como llegue a la primera condición verdadera, independientemente de si los operandos son estáticos o no.

En resumen, no se evaluarán las otras dos funciones si la primera devuelve verdadera.


Si para la expresión booleana especificada en las preguntas son booleanos estáticos, o son métodos que devuelven un valor booleano, en ambos casos, la evaluación de expresiones comenzará desde la izquierda y las condiciones se evaluarán una a una. La primera condición que da un valor verdadero cortocircuitará la evaluación. Proporcionará directamente el resultado como verdadero con las condiciones restantes sin evaluar. Así es como funciona (||) en Java utilizando el concepto de evaluación de cortocircuitos.

Si quiere saber más acerca de los cortocircuitos en general, puede consultar un artículo que he escrito en mi blog: http://www.javabrahman.com/programming-principles/short-circuiting-or-short-circuits-in-boolean-evaluations-in-programming-and-java/