He escrito un fragmento de código Java que se ejecuta en un bucle infinito.
A continuación se muestra el código:
public class TestProgram {
public static void main(String[] args){
Integer i = new Integer(0);
Integer j = new Integer(0);
while(i<=j && j<=i && i!=j){
System.out.println(i);
}
}
}
En el código anterior, mientras ve la condición en el whileciclo, al principio parece que ese programa no entrará en el whileciclo. Pero en realidad es un ciclo infinito y sigue imprimiendo el valor.
¿Que está sucediendo aquí?
io j, ¿cuándo esperaría que terminara el ciclo?
i<=jy j<=ise puede concluir, eso i == j, que contradice el último término. Por lo tanto, toda la expresión se evalúa como falsa y no se ingresaría el while. ¡El punto clave es la identidad del objeto aquí!
i<=j && j<=i && i!=jesta condición siempre se evalúa como verdadera. Solo toma un pedazo de papel y evalúa que lo atraparás :)