Dieser Code hat mich nur ein paar Minuten lang auf meinen Bildschirm starren lassen:
loop:
for (;;) {
// ...
}
( Zeile 137 hier )
Ich habe das noch nie gesehen und hatte keine Ahnung, dass Java ein "Schleifen" -Schlüsselwort hat (NetBeans färbt es nicht einmal wie ein Schlüsselwort), und es lässt sich gut mit JDK 6 kompilieren.
Was ist die Erklärung?
java
labeled-statements
Amy B.
quelle
quelle
Wie andere Plakate gesagt haben, handelt es sich um ein Etikett, nicht um ein Schlüsselwort. Mit Etiketten können Sie Folgendes tun:
Dies ermöglicht das Brechen der äußeren Schleife.
Link zur Dokumentation .
quelle
Die Frage wird beantwortet, aber als Randnotiz:
Ich habe von Interviewfragen a la "Warum ist dieser Java-Code gültig?" Gehört. (streifte das einfachere Beispiel ab; hier ist das gemeinere, danke Tim Büthe):
Würdet ihr alle wissen, was dieser Code ist (abgesehen von schrecklich)?
Lösung: zwei Beschriftungen
url
undhttp
, ein Kommentarwww.myserver.com/myfile.mp3
und ein Methodenaufruf mit einem Parameter, der denselben Namen (url
) wie die Beschriftung hat. Ja, dies wird kompiliert (wenn Sie den Methodenaufruf und die lokale Variable an anderer Stelle definieren).quelle
Das ist kein Schlüsselwort, es ist ein Label. Es soll mit den Schlüsselwörtern
break
undcontinue
in verschachtelten Schleifen verwendet werden:quelle
inner
Etikett ist hier nutzlos,break;
ist genuginner
Etikett aus Gründen der Klarheit.Es ist kein Schlüsselwort; Es ist ein Etikett .
Es ermöglicht Ihnen, eine beschriftete
break
und beschriftete zu gehencontinue
.quelle
Dies ist wirklich eine Antwort auf den Kommentar von Seanizer zur Antwort von org.life.java, aber ich wollte Code einfügen, damit ich die Kommentarfunktion nicht verwenden konnte.
Es ist zwar sehr selten, dass ich eine Verwendung für "break label" finde, aber es kommt gelegentlich vor. Der häufigste Fall ist, wenn ich nach etwas suche, das sich in einer Struktur befindet, für deren Suche eine verschachtelte Schleife erforderlich ist, z.
Normalerweise schiebe ich in solchen Fällen das Ganze in eine Unterroutine, damit ich bei einem Treffer das gefundene Objekt zurückgeben kann. Wenn es am Ende der Schleife herausfällt, kann ich null zurückgeben, um ein nicht gefundenes anzuzeigen, oder vielleicht eine Ausnahme auslösen. Dies ist jedoch gelegentlich nützlich.
Ehrlich gesagt denke ich, dass die Erfinder von Java diese Funktion aufgenommen haben, weil sie zwischen dieser und der Ausnahmebehandlung die letzten beiden legitimen Verwendungen für GOTO eliminiert haben.
Sehr später Nachtrag:
Ich habe einmal eine tolle Codezeile gesehen. Der Programmierer schrieb:
Er sagte eigentlich nicht "example.com", sondern die Website unseres Unternehmens.
Es entsteht der Eindruck, dass der Code eine URL enthält. Es wird erfolgreich kompiliert, als würde es etwas tun. Aber ... was macht es?
In Wirklichkeit macht es nichts. "http:" ist ein Label, auf das er nie verweist. Dann macht das "//" den Rest der Zeile zu einem Kommentar.
quelle
Es handelt sich um eine Haltepunktbezeichnung, mit der Sie aus einer bestimmten Schleife ausbrechen können und nicht nur aus der innersten, in der Sie sich gerade befinden.
Es wird in Zeile 148 verwendet .
quelle
Man könnte fast alles schreiben, da es ein Etikett ist ... Sie haben ein Beispiel hier
quelle
Es ist ein Etikett, sehen Sie sich jedoch das folgende Beispiel an:
Wenn
b>10
der Ausführungsfluss zur äußeren Schleife geht.quelle
Es ist ein Label, und Labels in Java können mit den Schlüsselwörtern
break
undcontinue
für zusätzliche Kontrolle über Schleifen verwendet werden.Hier wird es ziemlich gut erklärt:
Denken Sie in Java, brechen Sie und fahren Sie fort
quelle
Es ist kein Schlüsselwort, sondern eine Bezeichnung . Wenn Sie sich in der
for
Schleife befinden, schreibenbreak loop;
Sie und verlassen diese Schleife.quelle
Es ist ein Etikett. Im Allgemeinen wird in Java eine Bezeichnung verwendet, um den Kontrollfluss am gewünschten Speicherort zu übertragen, während für alle Schlüsselwörter, z. B. "Weiter" und "Unterbrechen", eine bestimmte Speicherortauswahl festgelegt ist.
quelle