Pętla FOR

Pętla FOR to rozszerzenie pętli WHILE. Podobnie jak w pętli WHILE mamy fragment kodu i warunek pętli. Analogicznie jak w przypadku pętli WHILE pętla FOR będzie się wykonywał tak długo, jak długo ten warunek jest prawdziwy. W pętli FOR mamy jednak ponadto możliwość deklarowania zmiennych pętli oraz instrukcji inkrementacji tych zmiennych. Ogólna postać pętli FOR jest następująca:

for({deklaracje zmiennych};{warunek pętli};{instrukcje inkrementacji}) {
  {ciało pętli}
}

W sekcjach {deklaracje zmiennych} oraz {instrukcje inkrementacji} możemy umieścić dowolną instrukcję, jednak ich przeznaczenie jest takie jakie wynika z nazwy. Obydwie sekcje mogą być ponadto zupełnie puste. Jeśli są one puste, to pętla FOR ma działanie identyczne jak pętla WHILE. Pętla:

for( ; {warunek pętli} ; ) {
  {ciało pętli}
}

jest odpowiednikiem pętli:

while( {warunek pętli} ) {
  {ciało pętli}
}

Wykonanie pętli FOR zaczyna się od wykonania kodu z sekcji {deklaracje zmiennych}. Kod ten wykonuje się zawsze dokładnie raz, niezależnie od tego ile razy wykona się ciało pętli. Jest to nijako kod inicjalizacji pętli.

Po wykonaniu sekcji {deklaracje zmiennych} obliczana jest wartość wyrażenia z sekcji {warunek pętli}. Jeśli wyrażenie to ma wartość true to wykonuje się {ciało pętli}. Po każdym wykonaniu ciała pętli wykonywany jest kod z sekcji {instrukcje inkrementacji}. Ciało pętli oraz instrukcje inkrementacji wykonują się cyklicznie dopóki spełniony jest warunek pętli.

Przykładowo, metodę lowerThan(…) którą w artykule „Pętle WHILE i DO-WHILE” zaimplementowaliśmy w sposób następujący:

public void lowerThan(int num) {19
  int x = 0;
 
  while( x < num ) {
    System.out.println(x);

    x = x + 1;
  }
}

możemy przy użyciu pętli FOR zaimplementować tak:

public void lowerThan(int num) {
  for( int x = 0 ; x < num ; x = x + 1 )
    System.out.println(x);
}

Podobnie jak w przypadku instrukcji IF-ELSE oraz wszystkich innych pętli, tak i w przypadku pętli FOR możemy pominąć nawiasy klamrowe obejmujące {ciało pętli}, jeśli {ciało pętli} to pojedyncza instrukcja. Skorzystaliśmy z tej możliwości w powyższym przykładzie.

Podobnie jak w przypadku pętli FOR-EACH zmienne zadeklarowane w nagłówku pętli w sekcji {deklaracje zmiennych} istnieją tylko w obrębie tej pętli, tj. próba użycia ich poza pętlą zakończy się błędem. Są to zmienne pętli i poza pętlą już po prostu nie istnieją.