![]()
Kurs Java #8 Pętle to kolejny wpis z naszego cyklu wpisów o Javie. Pętle w programowaniu pozwalają powtarzać fragmenty kodu bez konieczności pisania ich na okrągło. Pętle w Java odgrywają kluczową rolę w kontrolowaniu przepływu programu i automatyzacji powtarzalnych zadań. Bez nich codzienne operacje, takie jak przetwarzanie danych czy iterowanie po kolekcjach, byłyby nie tylko żmudne, czasochłonne, ale wręcz nierealne do efektywnego wdrożenia.
W Javie mamy cztery główne rodzaje pętli:
- for – klasyczna pętla do zadań, w których znasz liczbę iteracji
- while – gdy nie wiesz, ile razy kod powinien się wykonać
- do-while – gdy chcesz mieć pewność, że kod wykona się przynajmniej raz,
- for-each – specjalna wersja pętli do przechodzenia przez tablice i kolekcje
W tym artykule przyjrzymy się każdej z nich, pokażemy różnice i podpowiemy, kiedy warto użyć której.
Wprowadzenie
Każdy, kto zaczyna przygodę z Javą, szybko natrafi na temat pętli. To one pozwalają automatycznie wykonywać te same instrukcje wielokrotnie, aż do momentu, gdy spełniony zostanie określony warunek. Dzięki pętli możesz obsłużyć kod zawarty w kilku linijkach, który ręcznie wymagałby dziesiątek czy setek powtórzeń.
Wyobraź sobie, że chcesz wydrukować liczby od 1 do 100. Mógłbyś to zrobić 100 razy ręcznie, ale wykorzystując pętle można to zrobić szybciej i zajmie to tylko kilka linijek kodu. Praktycznie pętla zrobi to za nas.

Pętla for
Pętla for w Javie jest podstawową konstrukcją służącą do wielokrotnego wykonywania fragmentu kodu, szczególnie gdy z góry wiemy, ile razy dana operacja ma się powtórzyć Jest bardzo popularna przy pracy z tablicami, listami czy wykonywaniu powtarzalnych obliczeń.
Budowa pętli for:
for (inicjalizacja; warunek; modyfikacja) {
// kod do wykonania
}
- inicjalizacja – jest wykonywana raz, przed rozpoczęciem pętli. Najczęściej inicjalizujemy tu zmienną sterującą, np.
int i = 0. - warunek – jest sprawdzany przed każdym przejściem pętli. Jeśli jest prawdziwy, kod w pętli się wykonuje. Jeśli nie, pętla kończy działanie.
- modyfikacja – jest wykonywana po każdym przejściu pętli. Najczęściej zwiększamy lub zmniejszamy licznik, np.
i++lubi--.
Przykład:

Wyjaśnienie:
- int i
= 1– zaczynamy od 1, - i <= 5 – dopóki
ijest mniejsze lub równe 5, - i++ – po każdej iteracji zwiększamy
io 1.
Pętla while
Pętla while w Javie pozwala wielokrotnie wykonywać blok kodu, dopóki określony warunek logiczny jest spełniony (czyli ma wartość true). Jest szczególnie przydatna wtedy, gdy nie wiemy z góry, ile razy kod powinien się wykonać – pętla działa tak długo, jak długo spełniony jest warunek.
Budowa pętli while:
while (warunek) {
// kod do wykonania tzw. ciało pętli
}
- warunek – wyrażenie logiczne, które jest sprawdzane przed każdą iteracją pętli.
- ciało pętli – jeśli warunek jest prawdziwy, wykonywane jest ciało pętli, a jeśli fałszywy – pętla kończy działanie.
Przykład:

Wyjaśnienie:
- int x = 1 – zaczynamy od 1 (inicjalizacja zmiennej przed pętlą),
x <= 5– dopóki x jest mniejsze lub równe 5, wykonuj ciało pętli (warunek sprawdzany przed każdą iteracją),x++– po każdej iteracji zwiększamy x o 1 (modyfikacja zmiennej sterującej wewnątrz pętli).
Podsumowując: pętla while w tym przykładzie wykonuje swój blok kodu pięć razy, za każdym razem zwiększając wartość zmiennej sterującej i sprawdzając warunek przed kolejną iteracją.
Pętla do-while
Pętla do-while w Javie zapewnia, że blok kodu wykona się przynajmniej raz – nawet jeśli warunek na starcie jest fałszywy. Warunek sprawdzany jest dopiero po pierwszym wykonaniu ciała pętli.
Budowa pętli do-while:
do {
// kod do wykonania tzw. ciało pętli
} while (warunek);
- ciało pętli – kod wewnątrz bloku
dowykona się zawsze przynajmniej raz, niezależnie od warunku. - warunek – wyrażenie logiczne, które jest sprawdzane po każdej iteracji; jeśli jest prawdziwy, pętla wykona się ponownie, jeśli fałszywy – zakończy działanie.
Przykład:

Wyjaśnienie:
int x = 1– zaczynamy od 1 (inicjalizacja zmiennej przed pętlą),- wykonujemy ciało pętli: wypisujemy liczbę i zwiększamy ją o 1,
liczba <= 5– po każdej iteracji sprawdzamy warunek; jeśli liczba jest mniejsza lub równa 5, pętla wykona się ponownie.
W pętli do-while kod w bloku wykona się zawsze przynajmniej jeden raz, nawet jeśli warunek od początku jest fałszywy.
Pętla for-each
Pętla for-each (enhanced for loop) to wygodny sposób na przechodzenie po wszystkich elementach tablicy lub kolekcji – bez konieczności ręcznego operowania indeksem. Jest czytelna i minimalizuje ryzyko błędów związanych z dostępem do elementów poza zakresem.
Budowa pętli for-each:
for (typ zmienna : kolekcja) {
// kod
}
- typ zmienna – typ danych przechowywanych w tablicy lub kolekcji (np.
int,String). - kolekcja – tablica lub kolekcja, po której chcemy przejść.
- ciało pętli – kod wykonywany dla każdego elementu z kolekcji.
Przykład:

Wyjaśnienie:
- Dla każdego elementu tablicy
numbers, zmiennanumberprzyjmuje jego wartość i wykonywane jest ciało pętli.
Pętlę for-each używamy gdy chcemy przejść przez wszystkie elementy tablicy lub kolekcji i nie potrzebujemy znać indeksu. Pętlę użyjemy przy pracy z listami, zbiorami, mapami (po kolekcji wartości). Dzięki niej kod jest krótki i czytelny.
Pętle nieskończone
Nieskończona pętla to taka, która nigdy się nie kończy, ponieważ nie istnieje lub nie został spełniony warunek. Czasami jest to błąd, ale nie zawsze. W niektórych sytuacjach wywołanie nieskończonej pętli jest zamierzone, lecz niekontrolowane jej użycie obciąża procesor i może doprowadzić do zablokowania aplikacji.
Przykłady:
while (true) {
System.out.println("Nieskończona pętla while.");
}
for (;;) {
System.out.println("Nieskończona pętla for.");
}
for (int i = 1; i <= 5;) {
System.out.println(i);
// brak i++ powoduje, że i jest zawsze równe 1 więc pętla jest nieskończona
}
Są sytuacje, gdy nieskończona pętla jest celowa np. serwer oczekujący na połączenia, gra czekająca na ruch gracza, aplikacja reagująca na zdarzenia. Przy tworzeniu takiej pętli musimy być pewni, że w pewnym momencie zapewnimy jej wyście np. przez break, czy wciśnięciu klawiszy na klawiaturze Ctrl + C w konsoli i zakończeniu zadania.
Przykład pętli nieskończonej celowo:

Na początku tworzony jest obiekt klasy Scanner, który umożliwia odczytywanie danych wpisywanych przez użytkownika do konsoli. Następnie rozpoczyna się pętla while, której warunek to true, czyli zawsze prawdziwy – co czyni ją pętlą nieskończoną. Użytkownik proszony jest o wpisanie dowolnego tekstu. Jeśli wpisze inne słowo niż „exit”, program wypisze wprowadzone dane i przejdzie do kolejnej iteracji pętli. Gdy jednak użytkownik wpisze „exit” (niezależnie od wielkości liter), zostanie wyświetlony komunikat o zakończeniu działania programu, a pętla zostanie przerwana za pomocą instrukcji break. Choć technicznie pętla jest nieskończona, to jej zakończenie jest w pełni kontrolowane przez użytkownika, który może ją przerwać poprzez wpisanie odpowiedniego polecenia w konsoli.
Podsumowanie
Pętle to nieodłączony element programowania w Java. Pozwalają uproszczać powtarzalne czynności, przetwarzać dane, sterować logiką aplikacji i oszczędzać czas programisty. W artykule poznaliśmy trzy podstawowe rodzaje pętli: for, while, do-while oraz for-each. Dowiedzieliśmy się jak działają poszczególne pętle i kiedy warto ich używać oraz czym się różni pętla nieskończona od zwykłej.
Niektóre kwestie na tym etapie mogą być jeszcze niejasne, ale z upływem czasu i praktyki staną się bardziej zrozumiałe i intuicyjne. Prawidłowe używanie pętli to jeden z sposobów na pisanie efektywnego, czytelnego i elastycznego kodu.
O autorze
Tester oprogramowania z pasją do jakości i technologii. Łączy doświadczenie w testach manualnych i automatycznych, koncentrując się przede wszystkim na aplikacjach webowych oraz usługach SOAP i REST. Testowanie to dla niego nie tylko szukanie błędów, ale przede wszystkim kwestionowanie przyjętych założeń i usprawnianie tego, co nie działa – również w samym procesie testowym. Lubi zmieniać, angażować się i aktywnie budować proces testowy, tak by miał sens, a nie tylko formę. Prywatnie fan rocka, biwakowania, podróży.
