Was bedeutet ein Doppelpunkt bei Java?

2 Antworten

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

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;

TeeTier  12.03.2016, 02:36

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();
}
1
TeeTier  12.03.2016, 02:41
@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. ><

0
TeeTier  12.03.2016, 02:46
@TeeTier

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

0