Frage von jansimue, 70

Was bedeutet ein Doppelpunkt bei Java?

Also meine Frage ist, was ":" in diesem Beispiel bedeutet.

"for (int i : wasPassiert(x)) System.out.printf("%d ", i);"

Was bedeutet "int i : wasPassiert(x))......." ?

Grüße und danke für alle Hilfen!

Expertenantwort
von KnusperPudding, Community-Experte für Java, 69

Der Doppelpunkt kommt in Java auch noch an anderen Punkten zum Einsatz.

for (int i : wasPassiert(x)) {
System.out.printf("%d ", i);
}

Bei diesem Snippet handelt es sich um eine enhanced loop

Was bedeutet: die Array / Das Iterierbare-Objekt: "wasPassiert(x)" wird durchlaufen. dabei wird bei jedem durchlaufen der Wert in die Variable int i gespeichert.

Wenn du zu dem Thema mehr wissen willst, findest du etwas unter dem Stichwort: "Java Enhanced Loop".

Den Doppelpunkt gibt es noch beim: ? : Statement.

Dies ist eine Verkürzte Schreibweise für eine If Bedingung.

z.B.

int value;
int x = 1;
int y = 2;
if (x > y) {
   value = x;
} else {
   value = y;
}

kann mann verkürzt darstellen als:

value = (x>y) ? x : y;
Kommentar von TeeTier ,

Sprungmarken nicht vergessen:

outer:
for (int i = 0; i < X; ++i) {
for (int j = 0; j < Y; ++j) {
for (int k = 0; k < Z; ++k) {
if (foo()) {
break outer;
}
}
}
}

System.out.println("Hier geht es weiter!");

Dass drei verschachtelte Schleifen ganz schlechter Stil sind, übersehen wir jetzt aber alle mal großzügig! :)

Außerdem gibts ja noch case und default ...

switch(x) {
case 0: case 1:
foo();
break;
case 2:
default:
bar();
}
Kommentar von TeeTier ,

PS: Interessanter Bug im WYSIWYG Editor hier ... warum wird fett markierter Text in Codeabschnitten nicht mehr richtig eingerückt? Bin immer wieder überrascht, a) wie verbuggt diese Plattform hier ist, und b) wie lange es dauert, bis etwas gefixt wird ... wenn überhaupt.

Au weia. ><

Kommentar von TeeTier ,

PPS: Der Editor hat sogar "y = 1; break;" bei "case 2" geschluckt! Krass! Das tut ja langsam schon richtig weh ... ><

Kommentar von KnusperPudding ,

Der Code Editor lässt wirklich zu wünschen übrig. Leider :(

Kommentar von KnusperPudding ,

Stimmt, hab ich glatt vergessen. Vielen Dank für die Ergänzung!

Antwort
von Belaro, 45

Der Befehl, den du hier gerade gemacht hast, nennt man for each.

for-each kann man ein bisschen mit for-Schleifen vergleichen, nur kannst du bei for-each nicht die Schleifenanzahl bestimmen. Vielmehr wird for each ArrayList's verwendet. For each macht etwas bestimmtes mit jedem Objekt, welches sich in der ArrayList befindet.

Zum Beispiel:

ArrayList<Haus> listHaus = new ArrayList<>();
Haus haus1 = new Haus(1, "Bleicherweg");
Haus haus2 = new Haus(2, "Stockerstrasse");

listHaus.add(haus1);
listHaus.add(haus2);

for(Haus item0 : listHaus){
 System.out.println("Hausnummer: " + item0.nummer + " Adresse: " + item0.adresse + "\n");
}

Output:

Hausnummer: 1 Adresse: Bleicherweg
Hausnummer: 2 Adresse: Stockerstrasse

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten