sentencia que programacion else ejemplos java if-statement condition

java - que - Dos condiciones en una declaración if ¿la segunda importa si la primera es falsa?



sentencia if else en c++ (6)

Está bien, entonces tengo este código probado y descubrí que no hay ninguna excepción.

public static void main(String[] args) { int[] list = {1,2}; if (list.length>2 && list[3] == 2){ System.out.println(list[1]); } }

¿La declaración aquí?

if (list.length>2 && list[3] == 2)

¿Quiere decir que si la primera condición es falsa, ni siquiera tenemos que verificar la segunda condición?

O es igual a

if (list.length>2){ if (list[3] == 2){ ... } }

?

Y, ¿y si está escrito en C, python u otros idiomas?

Gracias


Desde el javadoc:

Los operadores condicionales

El && y || los operadores realizan operaciones Conditional-AND y Conditional-OR en dos expresiones booleanas. Estos operadores muestran un comportamiento de "cortocircuito", lo que significa que el segundo operando se evalúa solo si es necesario.

&& Conditional-AND || Condicional-O


Es común que los lenguajes (entre ellos, Java y Python) evalúen el primer argumento de un AND lógico y finalicen la evaluación de la declaración si el primer argumento es false . Esto es porque:

Del orden de evaluación de operadores lógicos ,

Cuando Java evalúa la expresión d = b && c ;, primero verifica si b es verdadero. Aquí b es falso, por lo que b && c debe ser falso independientemente de si c es o no verdadero, por lo que Java no se molesta en verificar el valor de c.

Esto se conoce como en.wikipedia.org/wiki/Short-circuit_evaluation , y también se menciona en los documentos de Java .

Es común ver list.count > 0 && list[0] == "Something" para verificar un elemento de lista, si existe.

También vale la pena mencionar que if (list.length>2 && list[3] == 2) no es igual al segundo caso

if (list.length>2){ if (list[3] == 2){ ... } }

si hay else después. Lo else se aplicará solo a la declaración if a la que está adjuntado.

Para demostrar esto gotcha:

if (x.kind.equals("Human")) { if (x.name.equals("Jordan")) { System.out.println("Hello Jordan!"); } } else { System.out.println("You are not a human!"); }

funcionará como se esperaba, pero

if (x.kind.equals("Human") && x.name.equals("Jordan")) { System.out.println("Hello Jordan!"); } else { System.out.println("You are not a human!"); }

también le dirá a cualquier Humano que no sea Jordan que no es humano.


Ha especificado en su declaración IF que ambas condiciones deberían ser verdaderas para que se ejecute System.out.println. Entonces, si la primera condición falla, la segunda condición no se verifica (esto es para el operador AND). Pero la segunda condición se comprobará si ha especificado el operador OR en la instrucción If.


Sí, ambos usos son semánticamente equivalentes ... Es decir, a menos que la longitud sea> 2, entonces se permite que el código acceda a más que el 2 ° elemento.

En el primer caso, lo que importa es el operador && , piense en ello como: Si la primera condición es verdadera , aplique una segunda condición.

La condición posterior también tiene una cláusula implícita "entonces"

if length greater than two then access third element


Sí. Si la primera condición no se cumple, el resto no se evalúa. Esto se conoce como cortocircuito . Mira en.wikipedia.org/wiki/Short-circuit_evaluation para más detalles. Tenga en cuenta que esto no es particular de Java y muchos otros idiomas harán lo mismo.


Si la primera condición es falsa, entonces no verificará la segunda condición como cualquier cosa && F = F de nuevo depende de qué operación de bit estás haciendo. como en el caso de O (||) si la primera condición es verdadera (T), no comprobará la segunda condición como cualquier cosa || T = T, pero si es falso (F), entonces definitivamente comprobará el segundo