W tym artykule omówię pętle dostępne w języku Java. W poprzednim artykule Tablice i listy – kod Java, IntelliJ, krok po kroku przedstawiłem struktury danych, które są idealne do prezentowania działania pętli w języku Java. Pętle służą do wykonywania danej czynności zaplanowaną liczbę razy, np. wyświetlenie tekstu „Hello World!” trzy razy.

Za pomocą pętli możemy iterować, przechodzić po kolejnych elementach. Pętle posiadają warunek sprawdzający czy można kolejny raz wykonać kod programu zawarty w pętli, np. przeszukuj tekst (iterowanie) do momentu znalezienia szukanego wyrazu (warunek). W języku Java mamy dostępnych kilka rodzajów pętli:
– „klasyczna” pętla for,
– pętla „for-each”,
– pętla while i do-while.
Więcej informacji można znaleźć w oficjalnej dokumentacji Java od Oracle The for Statement

Zanim przejdę do omawiania kodu poszczególnych pętli postaram się przedstawić przykłady ich użycia.

„Klasyczna” pętla for wykorzystywana jest w większości przypadków w połączeniu z tablicami, ponieważ każde kolejne przejście pętli, iteracja posiada „licznik” dzięki, któremu możemy operować na kolejnych elementach listy. Za pomocą tego licznika możemy przechodzić po elementach tablicy od początku do końca lub odwrotnie, albo po prostu wybrać interesujący nas element. Ta pętla jest wykonywana określoną liczbę razy, np. tyle ile jest elementów w tablicy. W szczególnym przypadku „klasyczna” pętla for może być pętlą nieskończoną.

Pętla „for-each” służy do iterowania po kolekcjach, czyli elementach, które implementują interfejs java.util.Collection, np. java.util.List, więcej informacji o tym można znaleźć w artykule Tablice i listy – kod Java, IntelliJ, krok po kroku. Za pomocą tej pętli można również iterować po tablicach, ale wymaga, to dodatkowego kodu. Pętla „for-each” jest dedykowana dla kolekcji. Ta pętla jest wykonywana określoną liczbę razy, np. tyle ile jest elementów w liście, kolekcji.

Kolejnym przykładem pętli w języku Java jest „while” i „do-while”. Obie pętle są wykorzystywane do wykonywania kodu w pętli dowolną ilość razy, byle został spełniony warunek pętli. W szczególnym przypadku pętla while i do-while mogą być pętlami nieskończonymi. Różnica między pętlo while i do-while jest tak, że pętla do-while wykona się przynajmniej raz ponieważ jej warunek sprawdzany jest później. Jak sama nazwa wskazuje „do-while”, do – zrób, wykonaj (czynność), a dopiero później while zawierająca warunek, zakończenia pętli.

Prezentację działania pętli for zrobię po prostu w metodzie main() bez klasy zawierającej metodę z „logiką” pętli for. Ułatwi, to zrozumienie istoty pętli bez „zaciemniania” obrazu dodatkową. Docelowo pętle for z ich logiką będą umieszczane w metodach i klasach.

Poniższy kod pokazuje i opisuje deklarację „klasycznej” pętli for.

public class ClassicForLoopMain {
    public static void main(String[] args) {
        // "klasyczna" pętla for
        // for(inicjalizacja; warunek końcowy; inkrementacja)
        // kolejne sekcje pętli for rozdzielane są średnikami ;
        // ---
        // Wyjaśnienie elementów od lewej do prawej:
        // for - początek deklaracji pętli
        // int i = 0 - inicjalizacja - nadanie wartości początkowej zmiennej w pętli
        // i < colors.length - warunek końcowy - wartość dla której pętla się zatrzyma
        // i++ - inkrementacja - zwiększenie zmiennej/licznika w pętli
        for (int i = 0; i < colors.length; i++) {
            // ciało pętli
        }
    }
}

Poniżej fragment kodu z użyciem „klasycznej” pętli for.

public class ClassicForLoopMain {
    public static void main(String[] args) {
        String[] colors = new String[2];
        colors[0] = "black";
        colors[1] = "white";

        for (int i = 0; i < colors.length; i++) {
            String color = colors[i];

            System.out.println("Bieżący kolor: " + color);
            System.out.println("i - indeks tablicy: " + i);
            System.out.println("colors[i] - wartość tablicy" + colors[i]);
        }
    }
}
Pętle - kod Java, IntelliJ, krok po kroku - konsola
PÄ™tle – kod Java, IntelliJ, krok po kroku – konsola – „klasyczna” pÄ™tla for

Poniższy kod pokazuje i opisuje deklarację pętli for-each.

public class ForEachLoopMain {
    public static void main(String[] args) {
        // pętla "for-each"
        // for(TypElementu element : elementy)
        // ---
        // Wyjaśnienie elementów od lewej do prawej:
        // for - początek deklaracji pętli
        // String - typ elementu, który jest przechowywany przez listę
        // color - bieżący element pętli
        // : - rozdzielenie elementu od elementów
        // colors - elementy, po których pętla iteruje
        for (String color : colors) {
            // ciało pętli
        }
    }
}

Poniżej fragment kodu z użyciem pętli for-each.

public class ForEachLoopMain {
    public static void main(String[] args) {
        List<String> colors = new ArrayList<>();
        colors.add("black");
        colors.add("white");

        for (String color : colors) {
            System.out.println("Bieżący kolor: " + color);
        }
    }
}
Pętle - kod Java, IntelliJ, krok po kroku - konsola - pętla for-each
PÄ™tle – kod Java, IntelliJ, krok po kroku – konsola – pÄ™tla for-each

Poniżej porównanie „klasycznej” pętli for oraz pętli „for-each”.

Pętle - kod Java, IntelliJ, krok po kroku - graficzne porównanie pętli for
PÄ™tle – kod Java, IntelliJ, krok po kroku – graficzne porównanie pÄ™tli for

Poniższy kod pokazuje i opisuje deklarację pętli while.

public class WhileLoopMain {
    public static void main(String[] args) {
        int count = 1;

        // pętla while
        // while(warunek zakończenia pętli)
        // ---
        // Wyjaśnienie elementów od lewej do prawej:
        // while - początek deklaracji pętli
        // count < 3 - warunek zakończenia pętli
        while (count < 3) {
            // ciało pętli
        }
    }
}

Poniżej fragment kodu z użyciem pętli while.

public class WhileLoopMain {
    public static void main(String[] args) {
        int count = 1;
        while (count < 3) {
            System.out.println("Licznik: " + count);
            count++;
        }
    }
}
Pętle - kod Java, IntelliJ, krok po kroku - konsola - pętla while
PÄ™tle – kod Java, IntelliJ, krok po kroku – konsola – pÄ™tla while

Poniższy kod pokazuje i opisuje deklarację pętli do-while.

public class DoWhileLoopMain {
    public static void main(String[] args) {
        int count = 1;

        // pętla do-while
        // do - ciało pętli while
        // while(warunek zakończenia pętli)
        // ---
        // Wyjaśnienie elementów od lewej do prawej:
        // do - początek deklaracji pętli
        // count < 3 - warunek zakończenia pętli
        do {
            // ciało pętli
        } while (count < 3);
    }
}

Poniżej fragment kodu z użyciem pętli do-while.

public class DoWhileLoopMain {
    public static void main(String[] args) {
        int count = 1;
        do {
            System.out.println("Licznik: " + count);
            count++;
        } while (count < 3);
    }
}
Pętle - kod Java, IntelliJ, krok po kroku - konsola - pętla do-while
PÄ™tle – kod Java, IntelliJ, krok po kroku – konsola – pÄ™tla do-while

Całość kodu można znaleźć na:

Zapraszam do regularnego odwiedzania mojej strony, będą pojawiać się kolejne artykuły oraz do kontaktu przez email kontakt(at)juniorjavadeveloper.pl.