Würde jemand bitte diese Anweisung für mich erklären: for (;;)Java: Was ist "for (;;)"
Ich habe mehrere Arten dieser Marke auftreten (wie in Ajax-Code von Facebook und in gleichzeitigen Sachen von Java).
Würde jemand bitte diese Anweisung für mich erklären: for (;;)Java: Was ist "for (;;)"
Ich habe mehrere Arten dieser Marke auftreten (wie in Ajax-Code von Facebook und in gleichzeitigen Sachen von Java).
Eine Endlosschleife.
Jeder der drei Teile einer for-Schleife (for(x; y; z)
) ist optional.
So können Sie dies tun:
int i = 0;
for (; i < 20; ++i)
und es ist vollkommen richtig, oder
for (int i = 0; i < 20;) { ++i; }
oder
for (int i = 0; ; ++i) { if (i < 20) { break; } }
und sie sind alle gültig.
Sie können auch alle drei Teile mit for(;;)
auslassen. Dann haben Sie eine Schleife, dass:
so im Grunde eine Endlosschleife. Es macht einfach das, was es im Schleifenkörper sagt, immer wieder
Siehe die Java Language Specification §14.14.1.2 http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.14.1.2 als Referenz: "Wenn die _Expression_ nicht vorhanden ist, oder es vorhanden ist und der Wert, der sich aus seiner Auswertung ergibt (einschließlich eventueller Unboxing) "wahr" ist, dann wird die enthaltene * Anweisung * ausgeführt. " –
Diese Antwort beweist ziemlich genau die Großartigkeit der" Keine Frage ist zu einfach "Politik. :) –
Es ist eine Endlosschleife. Für die Spezifizierung der for
-Anweisung siehe here.
Das ist eine Endlosschleife, ähnlich wie
while(true)
{
...
}
Sein eine unendliche Schleife, da die (nicht vorhandene) Ausgangsbedingung wird nie falsch sein.
Jede for-Schleife ohne Ausgang Bedingung wird unendlich sein:
for (int x=0; ; x++) { }
Genau das gleiche wie while (true)
, wenn auch ein wenig weniger lesbar IMHO.
Das ist in der Tat eine Endlosschleife. Aber in Java sollten Sie wirklich while (true)
über for (;;)
bevorzugen, da es lesbarer ist (was Sie wahrscheinlich schon erkennen). Der Compiler wird es trotzdem optimieren. In JavaScript gibt es keinen Compiler und jedes Byte über HTTP zählt, deshalb wird for (;;)
bevorzugt. Es speichert ein paar Zeichen (Bytes).
+1 für die Lesbarkeit von 'while (true)' – whiskeysierra
Ich finde 'for (;;)' lesbarer zu sein. – jalf
Die Syntax für eine for-Schleife ist
for (init-stmt; condition; next-stmt) {
}
So ist es einfach eine ohne anfängliche Aussage, nächste Anweisung oder Bedingung für die Schleife ist. Die Abwesenheit der austretenden Bedingung macht es unendlich.
#define EVER ;; für (EVER) // ... – Andrew