Was ist das Unterschied zwischen die while und die for schleifen in java?

Das Ergebnis basiert auf 9 Abstimmungen

Ja es gibt andere Unterschiede, die sind 78%
Nein, du hast recht es gibt keine 22%

6 Antworten

"for" erlaubt eine kompakte, lesbare Darstellung von "Zählschleifen": ich kann in einer Zeile übersichtlich die Initialisierung, das Weiterdrehen der Indexvariable sowie die Abbruchbedingung schreiben. Der Lebenszyklus der Indexvariable(n) ist damit auch automatisch auf die Schleife begrenzt, was meistens erwünscht ist.

Natürlich kann ich das genausogut mit while nachbilden, es ist eben weniger übersichtlich. Die beiden Schleifentypen sind prinzipiell gleichwertig, aber werden jeweils dort verwendet, wo sie übersichtlicher sind. Habe ich gar keine Indexvariable, ist for unnötig.

For-Schleifen sind typische Zählschleifen. Sie sind so aufgebaut, dass leicht über ein Index gelaufen werden kann.

While-Schleifen nimmt man lieber bei Abbruchbedingungen, die nicht an einem Zähler geknüpft sind, zum Beispiel beim zeilenweise Lesen einer Datei oder aus der Datenbank oder um Menüs zu realisieren (früher).

Eine While-Schleife lässt sich auch als For-Schleife schreiben (vis versa), aber dafür muss man sich etwas verbiegen.

Woher ich das weiß:Berufserfahrung – Programmierer
Ja es gibt andere Unterschiede, die sind

Eine Whileschleife erwartet einen boolen, das heißt du könntest zum Beispiel als boolean true übergeben. Das wäre zwar relativ sinnlos, jedoch würde die whileschleife sange ausgeführt werden, bis true nichtmehr true ist.

Bei einer Forschleife iterierst du durch etwas beliebes. Meistens durch eine Liste, also du iterierst bis du fertig mit der Liste bist. Oder mit einem Set etc.

Du kannst eine Forschleife auch als Whileschleife nutzen, dazu eignet sie sich jedoch weniger. (dafür gibt es nämlich die Whileschleife)

Woher ich das weiß:Hobby – Beigesterter Entwickler seit 2019
Nein, du hast recht es gibt keine

Prinzipiell sind while- und for-Schleifen äquivalent und können ineinander umgewandelt werden.

Denn folgende for-Schleife

for (statement1; statement2; statement3) {
  // code
}

ist gleich zu

statement1;
while(statement2) {
  // code
  statement3;
}

In der Regel nutzt man die For-Schleife, wenn man die Anzahl der Durchläufe schon kennt (z.B. iterieren über eine Liste) - denn hier hast du dann die entsprechenden Bedingungen alle im Schleifenkopf, was der Übersicht hilft

Anmerkung: DU kannst auch statement1, statement2 und statement3 in der for-Schleife weglassen und NUR die Semikolons schreiben, also for(;;) - das wäre dann äquivalent zur while(true)-Schleife ...

Ja es gibt andere Unterschiede, die sind

Mit einer While-Schleife kannst du z.B. auch Strings miteinander vergleichen und schauen ob die gleich sind oder nicht. Mit einer For-Schleife kannst du das nicht. Die For-Schleife eignet sich nur, wenn du einen bestimmten Anfangs- und einen Endwert hast bis dem du die Schleife ausführen willst. Ich persönlich benutze die For-Schleife kaum.

mertkert  22.04.2020, 11:18
Mit einer For-Schleife kannst du das nicht

Natürlich kann man das.

0
Vampirmeister22  22.04.2020, 11:19
@mertkert

For-Schleifen sind doch Zählerschleifen wie willst du das Strings miteinander vergleichen? Also ich meine, dass man eine While-Schleife so lange durchführen lassen kann bis die beiden Strings gleich sind oder eben nicht. Und das Gleichheit oder die Ungleichheit sind das Abbruchkriteritum. Wie willst du das mit einer For-Schleife realisieren?

0
Vampirmeister22  22.04.2020, 11:24
@mertkert

Oh das wusste ich garnicht. Dann hast du natürlich Recht. Das hab ich halt so noch nie gesehen.

0
mertkert  22.04.2020, 11:30
@Vampirmeister22

Sieht man auch nicht allzu oft, aber manchmal ist es tatsächlich sinnvoller und lesbarer, für nicht-indexierende Schleifen ein for zu verwenden.

0
nobytree2  22.04.2020, 12:02
@mertkert

man kann auch for(;;) für einen Dauerloop eingeben, aber das wird mitunter als stilistisch nicht akkurat beurteilt. Und manche Kurse an den Unis geben zumindest im imperativen Bereich Abzüge und halten an der Regel fest, keine Veränderung der Zählvariabel innerhalb von for. Es geht viel, im Implementierungsteil von for kann ich ein ganzes Programm reinschreiben (wenn es in Java auch den Komma-Operator gibt), vielleicht auch for komplett mit Lambdas füllen etc., irgendwann ist es aber eine Frage der Lesbarkeit

Und manche gehen - wie gesagt - davon aus, dass die" Zähl"-Variable in for nicht innerhalb des Blocks variiert wird - ist aber Ansichtssache.

0