Je préfère utiliser une boucle while , mais une expression nulle vous permet d'écrire ceci:
for (;;) { thread.run(); }
Cependant, une déclaration nulle vous permet d'écrire ceci:
while(true);
{
thread.run();
}
Le but principal est de perdre le temps du pauvre programmeur de maintenance qui vient après vous et se demande pourquoi le thread ne fonctionne pas. Une déclaration doit suivre un certain temps. Seul ; est une déclaration. Donc, ce bloc d'instructions ne fait pas réellement partie de la boucle.
Cela ne veut pas dire qu'il n'y a pas de bonnes utilisations. Ils sont juste rares. Ils ressemblent généralement à ceci:
{
;
}
Parce que de cette façon, cela ressemble plus à ce que vous voulez faire (même cela ne suffit parfois pas).
Dans l'assembly, cette instruction nulle est appelée NOP . En Python, cela s'appelle un laissez - passer . En java (et les autres enfants de c), c'est un point-virgule comme vous l'avez dit, ou même affirmer vrai;
Je connais quelques utilisations:
Sémantique .
Il y a une différence entre un espace vide et la mise à zéro comme réponse. Cela dit clairement, non, je n'ai pas oublié de mettre quelque chose ici. Ce rien n'est censé être rien. Ce n'est rien explicite. Cet espace laissé intentionnellement vide. C'est ainsi que nous obtenons N / A à compiler.
Le modèle nul
Imaginez une machine de signalisation lumineuse compliquée et coûteuse qui a ramassé à plusieurs reprises une ampoule colorée d'un tapis roulant, l'a vissée dans une prise, l'a mise sous tension, l'a retirée et a ramassé la suivante. Vous pouvez contrôler ce que cette chose signale par la couleur des ampoules que vous mettez sur la ceinture. Génial, maintenant que cela fonctionne parfaitement, votre patron veut que vous créiez un moyen de contrôler la synchronisation de ces signaux. Il veut ajouter un espace entre les messages. Vous vous souvenez avec horreur que de nombreuses parties se soucient de la synchronisation de ces signaux et de la difficulté de les synchroniser. Comment allez-vous contrôler le timing sans que cela vous garde au travail pendant le week-end? Vous regardez un bac d'ampoules grillées et vous vous faites une idée, enfin pas vraiment, brillante.
Parfois, vous voulez utiliser le polymorphisme pour simplement désactiver quelque chose sans rien casser.
Débogage
Lorsque vous définissez un point d'arrêt, vous devez disposer d'un emplacement pour le point d'arrêt. Maintenant, bien sûr, certains débogueurs vous permettront de le définir sur l'accolade de fermeture, mais s'ils ne le font pas, c'est bien que le langage vous permette de forcer un endroit pour en mettre un même si cet endroit ne fait rien.
Pas vraiment java mais il y a aussi:
Violonage binaire
L'instruction NOP des assemblages permet de manipuler l'exécutable binaire compilé. Mais les compilateurs java modernes optimisent tellement loin, je ne suis pas sûr que le point-virgule ne se contente pas de poof. Mais dans le passé, nous utilisions également ces espaces vides dans l'exécutable pour contrôler le timing ou nous permettre de nous accrocher plus tard. Sans le NOP, il y aurait des instructions réelles, donc si vous vouliez accrocher, vous devriez copier ces instructions ailleurs pour faire de la place pour le crochet. Cela fonctionne aussi bien dans le langage c dont Java tire une grande partie de sa syntaxe. Mais je ne pense pas que ce violon de crochet se produise beaucoup en Java. Nous utilisons la programmation orientée aspect pour ce faire.