Saya telah menulis sepotong kode Java yang berjalan dalam putaran tak terbatas.
Berikut kodenya:
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);
}
}
}
Pada kode di atas, saat melihat kondisi dalam whileloop, pada awalnya sepertinya program tersebut tidak akan masuk ke dalam whileloop. Tapi sebenarnya itu adalah loop tak terbatas dan terus mencetak nilainya.
Apa yang terjadi disini?
iatau j, kapan Anda mengharapkan loop berakhir?
i<=jdan j<=iAnda dapat menyimpulkan, itu i == j, yang bertentangan dengan istilah terakhir. Dengan demikian seluruh ekspresi bernilai false dan while tidak akan dimasukkan. Poin kuncinya adalah identitas objek di sini!
i<=j && j<=i && i!=jkondisi ini selalu bernilai benar. Ambil saja selembar kertas dan evaluasi Anda akan menangkapnya :)