Ich habe einen Java-Code geschrieben, der in einer Endlosschleife ausgeführt wird.
Unten ist der 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);
}
}
}
Im obigen Code whilesieht es zunächst so aus, als würde das Programm nicht in die Schleife gelangen , obwohl die Bedingung in der Schleife whileangezeigt wird. Aber eigentlich ist es eine Endlosschleife und druckt den Wert weiter.
Was passiert hier?
ioder jwann würden Sie erwarten, dass die Schleife endet?
i<=jund j<=iSie können feststellen, dass i == j, was den letzten Begriff widerspricht. Somit wird der gesamte Ausdruck als falsch ausgewertet und die Weile würde nicht eingegeben. Entscheidend ist hier die Objektidentität!
i<=j && j<=i && i!=jdiese Bedingung immer als wahr ausgewertet wird. Nehmen Sie einfach ein Stück Papier und bewerten Sie, ob Sie es fangen werden :)