Un for
ciclo in Java ha la seguente struttura -
for (initialization statement; condition check; update)
loop body;
Come si può vedere, ci sono quattro qui le istruzioni -
- inizializzazione: questo prospetto viene eseguito solo una volta, quando la il ciclo viene inserito per la prima volta. Questa è una dichiarazione opzionale, che significa che puoi scegliere di mantenere questo campo vuoto. Viene generalmente utilizzato per alcuni scopi di inizializzazione.
- Controllo condizionale: questa affermazione è probabilmente la più importante. Verifica per verificare se determinate espressioni sono vere o meno. Se lo è, l'esecuzione del ciclo continua. È possibile scegliere di mantenere questo campo vuoto, che verrà valutato su
true
.
- Aggiornamento: questo elenco di istruzioni viene eseguito da sinistra a destra, in genere utilizzato per incrementare/decrementare alcune variabili.
- corpo del loop: il corpo del ciclo, che verrà eseguito ancora e ancora in base al valore di verità del controllo condizionale.
Fondamentalmente segue l'esecuzione: in primo luogo, quando il ciclo viene immesso per la prima volta, l'istruzione di inizializzazione viene eseguita una volta. Quindi viene eseguito il controllo condizionale per verificare se è stato valutato su true. Se lo è, allora viene eseguito il corpo del ciclo, altrimenti l'esecuzione del ciclo è terminata. Dopodiché, le istruzioni Update vengono (vengono) eseguite. Successivamente, il controllo condizionale viene eseguito nuovamente e, se viene valutato su true, viene eseguito nuovamente il corpo del ciclo, quindi viene eseguita l'istruzione di aggiornamento, quindi il controllo condizionale .... viene visualizzata l'immagine.
Ora sulla tua sintassi for(; ;)
. Non ha alcuna istruzione di inizializzazione, quindi non verrà eseguito nulla. La sua istruzione di controllo condizionale è anch'essa vuota, quindi ciò significa che è true. Successivamente viene eseguito il corpo del loop.Successivamente, poiché l'istruzione update è vuota, non viene eseguito nulla. Quindi viene eseguito di nuovo il controllo condizionale che tornerà a essere true e quindi l'intero processo verrà ripetuto nuovamente.
Quindi, vedete, questo è fondamentalmente un ciclo infinito che non ha comunicato l'inizializzazione, la cui condizione di spunta restituisce sempre vero, e che non ha istruzione di aggiornamento. Questo è equivalente a -
while(true)
{
.....
}
che è un altro popolare costrutto di loop in java.
Quando si utilizza un ciclo infinito come questo, è importante prestare attenzione alla condizione di rottura come nella maggior parte dei casi non si può lasciare un ciclo a tempo indeterminato. Per uscire da questo tipo di loop, è possibile utilizzare l'istruzione break
. La struttura è la seguente -
if(some_condition_is_true)
break; // This will cause execution to break out of its nearest loop
o
if(some_condition_is_false)
break;
Anche se ci viene insegnato a evi d usando loop infinito, io sono colpevole di un po '(vero) in più di un'occasione. –
Mi sento come se avessero i loro momenti in cui sono utili – user489041
Almeno se si utilizza mentre (vero) la persona che legge il codice sembra più probabile capirlo ... – PeterT