J'ai écrit un morceau de code Java qui s'exécute dans une boucle infinie.
Voici le code:
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);
}
}
}
Dans le code ci-dessus, tout en voyant la condition dans la whileboucle, il semble au début que ce programme n'ira pas à l'intérieur de la whileboucle. Mais en fait, c'est une boucle infinie et continue à imprimer la valeur.
Que se passe-t-il ici?
iou j, quand vous attendez-vous à ce que la boucle se termine?
i<=jet j<=ivous pouvez conclure, cela i == j, ce qui contredit le dernier terme. Ainsi, l'expression entière est évaluée à false et le while ne serait pas entré. Le point clé est l'identité de l'objet ici!
i<=j && j<=i && i!=jcette condition est toujours évaluée comme vraie. Il suffit de prendre un morceau de papier et d'évaluer, vous l'attraperez :)