Tablice w Javie: indeksy, pętle i tablice 2D
Zaktualizowano 22 października 2026
Tablica w Javie rozwiązuje prosty problem: w jednej zmiennej zapiszesz tylko jedną wartość. Na dziesięć pomiarów albo siedem dni tygodnia potrzebowałbyś dziesięciu albo siedmiu zmiennych. Tablica grupuje wiele wartości tego samego typu pod jedną nazwą, a pętlą w Javie przechodzisz przez nie wszystkie.
Tworzenie, odczyt, zmiana
Nawiasy kwadratowe po typie robią z niego tablicę: int[], String[], double[]. Tablicę można utworzyć na dwa sposoby:
- ze stałymi wartościami:
String[] fruits = {"Apple", "Banana", "Cherry"}; - z rozmiarem:
int[] zeros = new int[4];(wszystkie miejsca mają wtedy wartość0, dlaStringnull)
Każde miejsce ma numer, czyli indeks. Liczymy od 0: fruits[0] to pierwszy element, fruits[fruits.length - 1] ostatni. length to liczba miejsc. Jest ustalana przy tworzeniu tablicy i potem się nie zmienia.
Arrays.toString(...) (z import java.util.Arrays;) zamienia tablicę na czytelny tekst.
import java.util.Arrays;
public class Main { public static void main(String[] args) { String[] fruits = {"Apple", "Banana", "Cherry"}; System.out.println(fruits[0]); System.out.println("Length: " + fruits.length);
fruits[1] = "Mango"; for (int i = 0; i < fruits.length; i++) { System.out.println(i + ": " + fruits[i]); }
int[] zeros = new int[4]; System.out.println(Arrays.toString(zeros)); System.out.println(Arrays.toString(fruits)); }}Tablice i pętle
Klasyczna forma przechodzi indeksem od 0 do length - 1. Dzięki temu możesz czytać, zapisywać, a nawet iść od tyłu. Tak działa też wyszukiwanie liniowe.
Jeśli nie potrzebujesz indeksu, krótsza jest pętla for-each: for (int number : numbers) oznacza „dla każdej liczby w numbers”. Ona tylko czyta. Zmienić nią wartości w tablicy się nie da.
import java.util.Arrays;import java.util.Scanner;
public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); int[] numbers = new int[n]; for (int i = 0; i < n; i++) { numbers[i] = scanner.nextInt(); } System.out.println("Read: " + Arrays.toString(numbers));
int even = 0; for (int number : numbers) { if (number % 2 == 0) { even++; } } System.out.println("Even numbers: " + even);
System.out.print("Backwards:"); for (int i = numbers.length - 1; i >= 0; i--) { System.out.print(" " + numbers[i]); } System.out.println(); }}
Wejście5 3 8 1 6 4
Pierwsza liczba na wejściu mówi, ile liczb nastąpi po niej.
Tablice dwuwymiarowe
Tablica może sama zawierać tablice, na przykład dla tabeli, planszy do gry albo sali kinowej. int[][] points to tablica wierszy, a każdy wiersz to int[]. points[1][2] to wiersz 1, kolumna 2 (oba liczone od 0). points.length to liczba wierszy, points[row].length długość jednego wiersza.
public class Main { public static void main(String[] args) { // One row per student, one column per exercise int[][] points = { {3, 5, 4}, {2, 5, 5}, {4, 1, 3}, }; for (int row = 0; row < points.length; row++) { int total = 0; for (int col = 0; col < points[row].length; col++) { total += points[row][col]; } System.out.println("Student " + (row + 1) + ": " + total + " points"); } System.out.println("Second student, third exercise: " + points[1][2]); }}Typowe błędy
Indeks poza tablicą
Ostatni element ma indeks
length - 1. Przyi <= numbers.lengthpętla sięga o jeden krok za daleko i program się wysypuje:ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
W warunku powinno być
<, a nie<=.Wypisywanie tablicy wprost
System.out.println(numbers)nie wypisuje zawartości, tylko coś w rodzaju[I@1b6d3586. Żeby zobaczyć zawartość, użyjArrays.toString(numbers).Przypisanie to nie kopiowanie
Zmienna tablicowa wskazuje na tablicę, a nie ją zawiera. Po
int[] b = a;obie wskazują na tę samą tablicę:int[] a = {1, 2, 3};int[] b = a;b[0] = 99;System.out.println(a[0]); // 99Za mała tablica
Rozmiaru tablicy nie da się później zmienić. Jeśli liczbę elementów poznajesz dopiero z wejścia, najpierw ją wczytaj, a potem utwórz tablicę:
int[] numbers = new int[n];. Jeśli kolekcja ma rosnąć w trakcie działania programu, użyjArrayList(zobacz listy i mapy w Javie).
Zadania z tego tematu
Przećwicz to, czego się nauczyłeś, od razu w przeglądarce. Testy natychmiast sprawdzają twoje rozwiązanie.
Powiązane artykuły
- PętlePętle w Javie w prosty sposób: for, while, do-while, break i continue z przykładami. Do tego typowe błędy, które kosztują punkty na kolokwium.Czytaj artykuł
- Listy i mapyListy i mapy w Javie w prosty sposób: ArrayList, HashSet i HashMap z przykładami. Do tego typowe błędy, np. List<int> i remove na liczbach.Czytaj artykuł
- WyszukiwanieWyszukiwanie liniowe i binarne w Javie prosto wyjaśnione: przykłady kodu, złożoność O(n) i O(log n) oraz typowe błędy, które padają na kolokwium.Czytaj artykuł