Ich bevorzuge die Verwendung einer while-Schleife , aber mit einem Null-Ausdruck können Sie Folgendes schreiben:
for (;;) { thread.run(); }
Mit einer Null-Anweisung können Sie jedoch Folgendes schreiben:
while(true);
{
thread.run();
}
Der Hauptzweck davon ist es, die Zeit des armen Wartungsprogrammierers zu verschwenden, der nach Ihnen kommt und sich fragt, warum der Thread nicht läuft. Eine Aussage muss eine Weile folgen. Ein einsamer; ist eine Aussage. Dieser Anweisungsblock ist also nicht Teil der Schleife.
Das heißt nicht, dass es keine guten Verwendungszwecke gibt. Sie sind nur selten. Sie sehen normalerweise so aus:
{
;
}
Weil es so aussieht, als ob Sie das vorhaben (auch das reicht manchmal nicht aus).
In der Assembly wird diese Null-Anweisung als NOP bezeichnet . In Python heißt es Pass . In Java (und den anderen Kindern von c) ist es ein Semikolon, wie Sie gesagt haben, oder sogar wahr zu behaupten;
Ich kenne einige Verwendungszwecke:
Semantik .
Es gibt einen Unterschied zwischen einem leeren Raum und dem Setzen einer Null als Antwort. Es steht klar, nein, ich habe nicht vergessen, hier etwas zu platzieren. Dieses Nichts soll nichts sein. Es ist explizit nichts. Dieser Raum wurde absichtlich leer gelassen. Auf diese Weise erhalten wir N / A zum Kompilieren.
Das Nullmuster
Stellen Sie sich eine komplizierte und teure Lichtsignalmaschine vor, die wiederholt eine farbige Glühbirne von einem Förderband aufnahm, sie in eine Fassung schraubte, einschaltete, entfernte und die nächste aufnahm. Sie können steuern, was dieses Ding durch die Farbe der Glühbirnen signalisiert, die Sie auf den Gürtel gelegt haben. Großartig, jetzt, da es endlich einwandfrei funktioniert, möchte Ihr Chef, dass Sie einen Weg finden, um das Timing dieser Signale zu steuern. Er möchte eine Lücke zwischen Nachrichten hinzufügen. Sie erinnern sich mit Entsetzen daran, dass sich viele Teile um das Timing dieser Signale kümmern und wie schmerzhaft es war, sie synchron zu halten. Wie können Sie das Timing kontrollieren, ohne dass Sie über das Wochenende bei der Arbeit bleiben? Sie schauen zu einem Behälter mit ausgebrannten Glühbirnen und bekommen eine, nicht wörtlich, gute Idee.
Manchmal möchten Sie Polymorphismus verwenden, um einfach etwas auszuschalten, ohne etwas zu beschädigen.
Debuggen
Wenn Sie einen Haltepunkt festlegen, muss ein Platz für den Haltepunkt vorhanden sein. Nun sicher, einige Debugger lassen Sie es auf die schließende geschweifte Klammer setzen, aber wenn sie es nicht tun, ist es schön, dass die Sprache Sie zwingen lässt, dass es einen Platz gibt, an dem Sie einen platzieren können, selbst wenn dieser Ort nichts tut.
Nicht wirklich eine Java-Sache, aber es gibt auch:
Binäres Geigen
Assemblies Der NOP-Befehl ermöglicht das Fummeln mit der kompilierten ausführbaren Binärdatei. Aber moderne Java-Compiler optimieren so viel, dass ich nicht sicher bin, ob das Semikolon nicht nur schlecht ist. Früher haben wir diese leeren Stellen in der ausführbaren Datei aber auch verwendet, um das Timing zu steuern oder um später einen Haken zu setzen. Ohne das NOP gäbe es dort tatsächliche Anweisungen. Wenn Sie also einbinden möchten, müssen Sie diese Anweisungen an eine andere Stelle kopieren, um Platz für den Haken zu schaffen. Dies funktioniert genauso gut in der c-Sprache, aus der Java einen Großteil seiner Syntax bezieht. Aber ich glaube nicht, dass dieses Hook-Fiddling in Java häufig vorkommt. Dazu verwenden wir die aspektorientierte Programmierung .