– Cześć, Amigo!

– Cześć, Basiu!

– Dziś opowiem Ci o nowej, ciekawej jednostce: tablicy. Tablica to taki typ danych, który może przechowywać wiele wartości, a nie tylko jedną.

Tablice - 1

– Zacznijmy od analogii. Porównajmy dom z apartamentowcem. W zwyczajnym domu mieszka zazwyczaj jedna rodzina, natomiast w apartamentowcu mieszkań jest wiele. Aby wysłać list do rodziny mieszkającej w domu, musisz znać unikalny numer ich domu. A jeśli chcesz wysłać list do rodziny w apartamentowcu, musisz znać unikalny numer apartamentowca oraz mieszkania.

– Jak dotąd wszystko jest jasne.

– Zmienna tablica jest jak nasz apartamentowiec. Możesz w niej przechowywać wiele wartości, a nie tylko jedną. Taka zmienna ma wiele mieszkań (elementów), do których można się odnieść, używając ich numeru (indeksu). Aby to zrobić, należy wskazać indeks elementu tablicy, do którego chcesz uzyskać dostęp, w nawiasach kwadratowych zaraz po nazwie zmiennej tablica. To raczej proste.

– Mam nadzieję, Basiu.

– Zmienna apartamentowca (zmienna array) może zawierać wiele elementów różnych typów. Wystarczy wpisać 'NazwaTypu[] zmienna_nazwa' zamiast 'NazwaTypu zmienna_nazwa'.

Oto kilka przykładów:

Kod Opis
String[] lista = new String[5];
Tworzy tablicę typu String z 5 elementami
System.out.println(lista[0]);
System.out.println(lista[1]);
System.out.println(lista[2]);
System.out.println(lista[3]);
System.out.println(lista[4]);
Wyświetli się pięć zmiennych 'null'.

Aby uzyskać dostęp do konkretnego elementu tablicy, użyj nawiasów kwadratowych i indeksu tego elementu.

int listLicznik = lista.length;
Do listLicznik zostanie przypisana wartość 5, która jest liczbą elementów listy z tablicą.
lista.length przechowuje długość tablicy (liczbę elementów).
lista[1] = "Mama";
String s = lista[1];
Podczas przypisywania obiektów do elementów tablicy musisz wskazać indeks elementu w nawiasach kwadratowych.
for (int i = 0; i < lista.length; i++)
{
     System.out.println(lista[i]);
}
Wyświetl wartości wszystkich elementów tablicy na ekranie.

– Ależ ciekawe!

– Zmienna tablicy wymaga dodatkowej inicjalizacji.

– ?

– Jeśli mamy zwykłą zmienną, możemy ją po prostu zadeklarować i przypisać do niej różne wartości. A z tablicą jest to trochę bardziej skomplikowane.

– Musimy najpierw utworzyć kontener, który będzie miał N elementów i dopiero wtedy możemy umieszczać w nim wartości.

Kod Opis
String[] lista = null;
Zmienna tablicy lista jest null. Może tylko przechowywać referencję do kontenera z elementami. Musisz utworzyć kontener osobno.
String[] lista = new String[5];
Używa kontenera na 5 elementów i przypisuje referencję do zmiennej lista. Kontener zawiera 5 mieszkań (elementów) o numerach: 0, 1, 2, 3 i 4.
String[] lista = new String[1];
Tworzy kontener dla 1 elementu i przypisuje referencję do zmiennej lista. Aby umieścić coś w tym kontenerze, napiszemy coś w stylu lista[0] = "Elo!";
String[] lista = new String[0];
Używa kontenera dla 0 elementów i przypisuje referencję do zmiennej lista. Nie możesz umieścić niczego w tym kontenerze.

– Rozumiem. Trochę mi się to rozjaśniło.

– A oto kilka podstawowych faktów o tablicach:

1) Tablica składa się z wielu elementów.

2) Aby uzyskać dostęp do jakiegoś elementu, wskazujesz jego numer (indeks).

3) Wszystkie elementy są tego samego typu.

4) Wartość początkowa dla wszystkich elementów to null; dla tablic typu prostego wartość początkowa to 0; 0.0 (dla liczb ułamkowych) lub false (dla boolean). Tak samo jest z niezinicjalizowanymi zmiennymi, które nie są w tablicach.

5) String[] lista po prostu deklaruje zmienną. Najpierw należy utworzyć tablicę (kontener), coś w niej umieścić, a dopiero potem jej używać (spójrz na poniższy przykład).

6) Kiedy tworzymy obiekt tablicy (kontener), musimy wskazać jej długość lub liczbę elementów. Robimy to za pomocą NazwaTypu[n];

Tablice - 2

Oto kilka przykładów:

Kod Opis
String s;
String[] lista;
s jest równe null
lista jest równe null
lista = new String[10];
int n = lista.length;
Zmienna lista przechowuje referencję do obiektu – 10-elementowej tablicy ciągów
n jest równe 10
lista = new String[0];
Teraz lista zawiera 0 elementów tablicy. Tablica istnieje, ale nie może przechowywać Stringów.
lista = null;
System.out.println(lista[1]);
To wyrzuci wyjątek (błąd run-time) i program zostanie zakończony: lista zawiera referencję null.
lista = new String[10];
System.out.println(lista[11]);
To wyrzuci wyjątek (błąd run-time): array index out of bounds (wyjątek może wystąpić w sytuacji, w której próbujemy odwołać się do elementu tablicy lub struktury danych wykraczając poza jej rozmiar).

Jeśli lista zawiera 10 elementów, prawidłowe indeksy to: 0,1,2,3,4,5,6,7,8 i 9 (dla wszystkich 10 indeksów).