Definicja pętli for jest następująca:

for (<inicjalizacja>; <warunek pętli>; <wyrażanie zwiększające wartość>)
     <instrukcje do wykonania>

Chyba najczęściej używana forma instrukcji for wygląda tak:

1
2
3
4
5
6
for (int i = 0; i < 10; i++) {
        int k = 0;
        for (k = 0; k < i; k++) {
                // zrób coś
        }
}

Widać, że inicjalizacja zmiennej w pętli może zostać połączona także z jej deklaracją. Należy pamiętać, że jeżeli deklarację przeprowadzimy w części związanej z inicjalizacją, to zmienna taka będzie widziana tylko w ramach instrukcji for.

Nie trzeba ograniczać się do inicjalizacji tylko jednej zmiennej, można zrobić coś takiego:

1
2
3
for (int i = 0, k = 0; i < 3 && k < 1; i++, k++) {
        System.out.println("Pętla : i = " + i + ", k = " + k);
}

Kolejne inicjalizacje zmiennych powinny być rozdzielone przecinkami i wszystkie są tego samego typu. Nie jest dozwolona taka konstrukcja:

1
2
3
for (int i = 0, long k = 0; i < 3 && k < 1; i++, k++) {
    System.out.println("Pętla : i = " + i + ", k = " + k);
}

Można to ominąć, przenoszą deklarację zmienny poza pętlę for:

1
2
3
4
5
int i;
long k;
for (i = 0, k = 0; i < 3 && k < 1; i++, k++) {
    System.out.println("Pętla : i = " + i + ", k = " + k);
}

Jest także możliwa tak egzotyczna konstrukcja:

1
2
3
4
int i, k;
for (i = 0, k = 0, System.out.println("Petla for"); i < 3; i++) {
    System.out.println("Pętla : i = " + i + ", k = " + k);
}

Oczywiście, nie jest to zalecany sposób komunikowania, że rozpoczyna się pętla :).

Źródła