Ho scritto un pezzo di codice Java che viene eseguito in un ciclo infinito.
Di seguito il codice:
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);
}
}
}
Nel codice sopra, mentre si vede la condizione nel whileciclo, all'inizio sembra che quel programma non entrerà nel whileciclo. Ma in realtà è un ciclo infinito e continua a stampare il valore.
Cosa sta succedendo qui?
io j, quando ti aspetti che il ciclo termini?
i<=je j<=isi può concludere, quello i == j, che contraddice l'ultimo termine. Pertanto l'intera espressione restituisce false e il tempo non viene immesso. Il punto chiave è l'identità dell'oggetto qui!
i<=j && j<=i && i!=jquesta condizione viene sempre valutata come vera. Prendi un pezzo di carta e valuta di prenderlo :)