Ich studiere für eine Java-Zertifizierung und auf einer der Scheinprüfungen sah ich eine sehr seltsame Implementierung der For-Schleife. Die Übung zeigte die folgende Syntax:Warum erweiterte for-Schleife nicht fehlschlägt, wenn mit Semikolon endet?
for (Days d: Days.values());
Am Anfang dachte ich, dass es ein Syntaxfehler war, da ich, dass die Syntax wusste immer, für die „For-Schleife“ erfordert geschweiften Klammern oder, wenn es nur eine Instruktion zur Iteration können wir die geschweiften Klammern überspringen und unsere Anweisung direkt nach der Schleife ausrichten. - Da ich nicht vor einem For-Schleife mit Semikolon endet gesehen haben „;“ .--
Dann habe ich versucht, eine Dokumentation über sie zu finden, aber leider konnte ich keine Erklärung finden, warum ist eine rechtliche Code Erklärung . Nur Verweise auf die folgende Syntax:
The syntax of enhanced for loop is:
for(declaration : expression)
{
//Statements
}
Das Seltsame ist, nach all dies, dass ich meinen Code getestet und überraschend es kompiliert und lief richtig. Dann, basierend auf einigen Tests, die ich gemacht habe (mit dem Code), entdeckte ich, dass es scheint, dass das ";" funktioniert wie eine For-Schleife leer, aber mit geschweiften Klammern, so dass jede Anweisung danach nur einmal ausgeführt wird. (Als ob der Code außerhalb der Schleife wäre). Aber ich bin nicht sicher, ob dies die richtige Interpretation des Semikolons auf den erweiterten for-Schleifen ist.
Bitte beachten Sie die komplette Beispiel:
package com.TestDays;
public class TestDays {
public enum Days { MON, TUE, WED};
public static void main(String[] args) {
int x = 0;
*for (Days d: Days.values());*
Days[] d2 = Days.values();
System.out.println(d2[2]);
}
}
- Hat jemand weiß, warum diese Syntax erlaubt? Danke.
A 'for (Tage d: Days.values ());' ist das selbe wie 'for (Tage d: Days.values ()) {// nichts in den curlies}', leer für die Anweisung. –