Was bedeutet int i doppelpunkt in java?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

In C# heißt das foreach-Schleife:

int[] array = new int[] { 1, 2, 3, 4 };
foreach(int i in array)
    ...

Also grob übersetzt: "Für jedes Element i des Typs int im Array array" soll die Schleife ausgeführt werden. In Java funktioniert das genauso:

for(int i : array)
    ...

Es wird also jedes Element im Feld array durchlaufen, wobei array ein Array, aber auch ein anderer Container (Listen etc.) sein kann. Während eines Schleifendurchlaufs ist die Variable i verfügbar, die den Wert des aktuellen Felds enthält. Beim ersten Durchlauf wäre i also array[0], dann array[1] usw.

Habs gefunden. Bedeutet Schleife durch Array, wobei der aktuelle Wert bei jedem Durchlauf in die Variable "i" kopiert wird, korrekt?

susannhh  31.08.2013, 13:24

Korrekt.

0
maber  01.09.2013, 06:18

Zugewiesen, nicht kopiert! Das kann mitunter bei Objekten einen ganz schönen unterschied machen, je nachdem was in der Schleife passiert.

0
for (int arrayElement : array) {

}

ist gleich mit

for(int i = 0; i < array.lenght; i++) {
    int arrayElement = array[i];
}

Das geht mit allen arrays und allen Klassen, die Iterator und Iterable implementieren.

package java.lang;
import java.util.Iterator;
public abstract interface Iterable<T>
{
    public abstract Iterator<T> iterator();
}

package java.util;
public abstract interface Iterator<E>
{
    public abstract boolean hasNext();
    public abstract E next();
    public abstract void remove();
}