Preferisco utilizzare un while loop , ma un'espressione nulla ti permette di scrivere questo:
for (;;) { thread.run(); }
Tuttavia, una dichiarazione nulla ti permette di scrivere questo:
while(true);
{
thread.run();
}
Lo scopo principale è quello di sprecare il tempo del programmatore di manutenzione scadente che viene dopo di te e si chiede perché il thread non è in esecuzione. Una dichiarazione deve seguire un po '. Solo ; è una dichiarazione. Quindi questo blocco di istruzioni non è in realtà parte del ciclo.
Questo non vuol dire che non ci sono buoni usi. Sono solo rari. Di solito assomigliano a questo:
{
;
}
Perché in questo modo sembra più che tu voglia farlo (anche questo a volte non è sufficiente)
In assembly questa istruzione nulla è chiamata NOP . In Python si chiama un passaggio . In java (e gli altri figli di c) è un punto e virgola come hai detto, o anche asserire vero;
Conosco alcuni usi:
Semantic .
C'è una differenza tra uno spazio vuoto e uno zero come risposta. Dice chiaramente, no, non ho dimenticato di mettere qualcosa qui. Questo nulla è pensato per essere nulla. Non è esplicito. Questo spazio lasciato intenzionalmente in bianco. Questo è il modo in cui otteniamo N / A da compilare.
Lo schema null
Immagina una complicata e costosa macchina per la segnalazione luminosa che raccoglie ripetutamente una lampadina colorata da un nastro trasportatore, la infila in una presa, la accende, la rimuove e ne preleva la successiva. Puoi controllare cosa è segnalato dal colore delle lampadine che hai messo in cintura. Bene, ora che finalmente funziona perfettamente, il tuo capo vuole che tu crei un modo per controllare i tempi di questi segnali. Vuole aggiungere un divario tra i messaggi. Ricordi con orrore che molte parti si preoccupano della tempistica di questi segnali e che dolore provava a sincronizzarli. Come controllerai i tempi senza che questo ti renda al lavoro durante il weekend? Osservi un contenitore di lampadine bruciate e ottieni un'idea brillante, non letteralmente brillante.
A volte vuoi usare il polimorfismo per spegnere qualcosa senza rompere nulla.
Debug
Quando si imposta un punto di interruzione, è necessario che ci sia un posto per il punto di interruzione. Ora certi debugger ti permetteranno di settarlo sulla parentesi graffa di chiusura, ma se non lo fanno è bello che il linguaggio ti permetta di forzare un posto dove metterne uno anche se quel posto non fa nulla.
Non proprio una cosa java ma c'è anche:
Manipolazione binaria
Assemblaggi L'istruzione NOP consente di giocherellare con l'eseguibile binario compilato. Ma i compilatori Java moderni ottimizzano così tanto lontano che non sono sicuro che il punto e virgola non vada a finire male. Ma ai vecchi tempi usavamo anche questi punti vuoti nell'eseguibile per controllare i tempi o permetterci di cadere in un gancio più tardi. Senza il NOP ci sarebbero istruzioni effettive lì, quindi se si voleva agganciare si dovrebbero copiare quelle istruzioni da qualche altra parte per fare spazio al gancio. Questo funziona altrettanto bene nel linguaggio c dal quale Java ottiene gran parte della sua sintassi. Ma non penso che questo hook sia un giochetto molto in Java. Per farlo, utilizziamo Programmazione orientata agli aspetti .