Zastosowania „for” w Javie

Jestem dość nowy w Javie iw innym pytaniu dotyczącym przepełnienia stosudla pętli odpowiedź mówi, że w języku Java istnieją dwa sposoby użycia:

for (int i = 0; i < N; i++) {
}


for (String a : anyIterable) {
}

Znam pierwsze użycie i dużo z niego korzystałem, ale nigdy nie widziałem drugiego. Do czego służy i kiedy z niego korzystać?