Napisałem fragment kodu Java, który działa w nieskończonej pętli.
Poniżej kod:
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);
}
}
}
W powyższym kodzie, widząc warunek w whilepętli, na początku wygląda na to, że program nie wejdzie do whilepętli. Ale w rzeczywistości jest to nieskończona pętla i nadal drukuje wartość.
Co tu się dzieje?
ilub jkiedy spodziewasz się zakończenia pętli?
i<=ji j<=imożna wywnioskować, że jest to i == jsprzeczne z ostatnim terminem. W ten sposób całe wyrażenie przyjmuje wartość false, a while nie zostałby wprowadzony. Kluczową kwestią jest tutaj tożsamość obiektu!
i<=j && j<=i && i!=jtaka, że warunek ten zawsze jest prawdziwy. Po prostu weź kawałek papieru i oceń, że złapiesz :)