Escrevi um trecho de código Java que está sendo executado em um loop infinito.
Abaixo está o 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);
}
}
}
No código acima, ao ver a condição no whileloop, a princípio parece que o programa não entrará no whileloop. Mas na verdade é um loop infinito e continua imprimindo o valor.
O que esta acontecendo aqui?
iou j, quando espera que o loop termine?
i<=je j<=ivocê pode concluir, isso i == j, que contradiz o último termo. Portanto, toda a expressão é avaliada como falsa e o while não seria inserido. O ponto chave é a identidade do objeto aqui!
i<=j && j<=i && i!=jessa condição sempre é avaliada como verdadeira. Pegue um pedaço de papel e avalie que você vai pegá-lo :)