1. Schleifen vergleichen: forvswhile

Eine whileSchleife kann überall dort eingesetzt werden, wo eine Anweisung oder eine Gruppe von Anweisungen mehrmals ausgeführt werden muss. Unter all den möglichen Szenarien ist jedoch eines hervorzuheben.

Wir sprechen von einer Situation, in der der Programmierer (der Ersteller des Programms) im Voraus weiß, wie oft die Schleife ausgeführt werden soll. Dies geschieht normalerweise durch die Deklaration einer speziellen Zählervariablen und die anschließende Erhöhung (oder Verringerung) der Variablen um bei 1jedem Durchlauf der Schleife.

Alles scheint so zu funktionieren, wie es sollte, aber es ist nicht sehr praktisch. Vor der Schleife legen wir den Anfangswert der Zählervariablen fest. Anschließend prüfen wir in der Bedingung, ob der Endwert bereits erreicht ist. Normalerweise ändern wir den Wert jedoch ganz am Ende des Schleifenkörpers.

Und was ist, wenn der Schleifenkörper groß ist? Oder wenn wir mehrere verschachtelte Schleifen haben? Im Allgemeinen ist es in diesen Fällen wünschenswert, alle Informationen über Zählervariablen an einem Ort zu sammeln. Und deshalb haben wir die forSchleife in Java. Es sieht auch nicht sehr kompliziert aus:

for (statement 1; condition; statement 2)
{
   block of statements
}

Eine whileSchleife hat nur eine Bedingung in Klammern, aber eine forSchleife fügt zwei Anweisungen hinzu, die durch Semikolons getrennt sind.

Die Realität ist einfacher als sie klingt: Der Compiler wandelt eine forSchleife whilewie folgt in eine gewöhnliche Schleife um:

statement 1;
while (condition)
{
   block of statements
   statement 2;
}

Oder noch besser: Lassen Sie uns dies anhand eines Beispiels demonstrieren. Die beiden folgenden Codeausschnitte sind identisch.

Option 1 Option 2
for (int i = 0; i < 20; i++)
{
   System.out.println(i);
}
int i = 0;
while (i < 20)
{
   System.out.println(i);
   i++;
}

Wir haben gerade den gesamten Code, der sich auf die iZählervariable bezieht, an einem Ort gesammelt.

In einer forSchleife wird Anweisung 1 nur einmal ausgeführt, bevor die Schleife selbst beginnt. Dies ist im zweiten Codeausschnitt deutlich zu erkennen

Anweisung 2 wird genauso oft ausgeführt wie der Schleifenkörper, und zwar jedes Mal, nachdem der gesamte Schleifenkörper ausgeführt wurde


2. Wo die forSchleife verwendet wird

Die forSchleife ist wahrscheinlich der am häufigsten verwendete Schleifentyp in Java. Es wird überall verwendet, für Programmierer ist es einfach übersichtlicher und bequemer als eine whileSchleife. Praktisch jede whileSchleife kann in eine forSchleife umgewandelt werden.

Beispiele:

while-Schleife for-Schleife
int i = 3;
while (i >= 0)
{
   System.out.println(i);
   i--;
}
for (int i = 3; i >= 0; i--)
{
   System.out.println(i);
}
int i = 0;
while (i < 3)
{
   System.out.println(i);
   i++;
}
for (int i = 0; i < 3; i++)
{
   System.out.println(i);
}
boolean isExit = false;
while (!isExit)
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
for (boolean isExit = false; !isExit; )
{
   String s = console.nextLine();
   isExit = s.equals("exit");
}
while (true)
   System.out.println("C");
for (; true; )
   System.out.println("C");
while (true)
{
   String s = console.nextLine();
   if (s.equals("exit"))
      break;
}
for (; true; )
{
   String s = console.nextLine();
   if (s.equals("exit"))
      break;
}

Achten Sie auf das letzte Beispiel. Es fehlen die Anweisungen zum Arbeiten mit dem Schleifenzähler. Es gibt keinen Zähler und keine Aussage.

In einer forSchleife können Sie in Java die „Anweisung zum Initialisieren des Zählers“ und die „Anweisung zum Aktualisieren des Zählers“ weglassen. Sogar der Ausdruck, der die Schleifenbedingung definiert, kann weggelassen werden.



3. Nuancen der Verwendung der forSchleife

Ein wichtiger Punkt bei der Verwendung von forSchleifen und breakund- continueAnweisungen.

Eine breakAnweisung in einer forSchleife funktioniert genauso wie in einer whileSchleife – sie beendet die Schleife sofort. Eine continueAnweisung überspringt den Schleifenkörper, jedoch nicht statement 2(wodurch sich der Schleifenzähler ändert).

Schauen wir uns noch einmal an, wie forund- whileSchleifen zusammenhängen.

for (statement 1; condition; statement 2)
{
   block of statements
}
statement 1;
while (condition)
{
   block of statements
   statement 2;
}

Wenn eine Anweisung in einer continueforSchleife ausgeführt wird , wird der Rest des Anweisungsblocks übersprungen, Anweisung 2 (diejenige, die mit der forZählervariablen der Schleife arbeitet) wird jedoch weiterhin ausgeführt.

Kehren wir zu unserem Beispiel zurück und überspringen Zahlen, die durch 7 teilbar sind.

Dieser Code wird für immer wiederholt Dieser Code wird gut funktionieren
int i = 1;
while (i <= 20)
{
   if ( (i % 7) == 0) continue;
   System.out.println(i);
   i++;
}
for (int i = 1; i <= 20; i++)
{
   if ( (i % 7) == 0) continue;
   System.out.println(i);
}

Der Code, der die whileSchleife verwendet, wird nicht funktionieren – i wird nie größer als 7 sein. Aber der Code mit der forSchleife wird gut funktionieren.



4. Vergleich von for-Schleifen: Java vs. Pascal

Pascal hat übrigens auch eine ForSchleife. Im Allgemeinen hat praktisch jede Programmiersprache eine. Aber bei Pascal ist es super klar. Beispiele:

Pascal Java
For i := 1 to 10 do
Begin
   Writeln(i);
End;
for (int i = 1; i <= 10; i++)
{
   System.out.println(i);
}
For i := 1 to 10 do step 2
Begin
   Writeln(i);
End;
for (int i = 1; i <= 10; i = i + 2)
{
   System.out.println(i);
}
For i := 10 downto 0 do step 2
Begin
   Writeln(i);
End;
for (int i = 10; i >= 0; i = i - 2)
{
   System.out.println(i);
}