1. Tablice w pamięci
Zdjęcia w poprzednich przykładach są nieco niedokładne.
Podczas tworzenia tablic (a także podczas tworzenia łańcuchów znaków) w pamięci przydzielane są dwa bloki pamięci: jeden do przechowywania samej tablicy (kontenera), a drugi dla zmiennej przechowującej jej adres . Zaktualizowana sytuacja jest pokazana na poniższym obrazku:
Kolor zielony pokazuje tablicę 10
elementów typu int
i zmienną typu int[]
, która przechowuje adres (referencję) tablicy typów int
w pamięci.
int
Dla porównania zmienna typu normalnego przechowująca wartość jest zaznaczona na niebiesko 199
.
To trochę jak przechowywanie ciągów znaków w pamięci, nie sądzisz?
Właśnie tak, linie. I podobnie jak w przypadku łańcuchów, „zmienne tablicowe” można sobie przypisywać:
Kod | Wyjaśnienie |
---|---|
|
Tworzymy tablicę 10 elementów typu int . Wpisz wartość do komórki z indeksem . Wpisz wartość do komórki z indeksem . Zapisujemy adres, który jest w zmiennej do zmiennej . Teraz oba wskazują na ten sam obiekt tablicy w pamięci. W komórce z indeksem obiektu array wpisujemy sumę wartości, które są przechowywane w komórkach (stored ) i (stored ). 2 4 7 9 b a a b 9 2 4 7 9 |
W takim przypadku obiekt tablica pozostanie tam, gdzie był, a zmienne a
i b
będą przechowywać te same adresy (referencje) do tego samego obiektu. Widzieć zdjęcie:

2. Bardziej szczegółowa praca z tablicą
Tablicę można utworzyć z absolutnie dowolnego typu. Aby to zrobić, wystarczy napisać nawiasy kwadratowe po nazwie typu. Ogólna forma tworzenia tablicy będzie następująca:
тип[] Nazwa = new тип[ilość];
Gdzie typ to typ elementów tablicy (komórek), które będziemy przechowywać w tablicy. Nazwa to nazwa zmiennej, za pomocą której uzyskamy dostęp do tablicy, a ilość to liczba komórek w tablicy.
Powyższy przykład pokazuje postać kanoniczną: tworzenie zmiennej tablicowej i tworzenie obiektu tablicowego. W rzeczywistości są to dwie niezależne struktury.
Zmienną tablicową i obiekt tablicowy można utworzyć oddzielnie:
тип[] Nazwa;
Nazwa = new тип[ilość];
I jeszcze jeden ważny punkt:
Przykłady:
Kod | Wyjaśnienie |
---|---|
|
Tworzenie tablicy z n elementów |
|
Tworzenie tablicy dla każdego 203 elementu |
|
|
0..99
jest
ArrayIndexOfBoundException
poza tablica.
3. Długość tablicy
Jak widzieliśmy w poprzednim przykładzie, można oddzielnie utworzyć zmienną tablicową, a następnie przypisać jej wartość (odwołanie do obiektu tablicowego) gdzieś w kodzie. Możesz nawet to zrobić:
Kod | Wyjaśnienie |
---|---|
|
Utwórz zmienną tablicową typu int[] Jeśli zmienna jest a mniejsza niż 10 , utwórz tablicę 10 elementów. W przeciwnym razie utwórz tablicę 20 elementów |
I jak dalej pracować z taką tablicą? Jak mogę dowiedzieć się, ile ma elementów?
Aby to zrobić, tablica ma specjalną właściwość (zmienną) - length
. Długość tablicy można znaleźć za pomocą następującego wyrażenia:
array.length;
Gdzie array
jest nazwą zmiennej tablicowej i length
jest nazwą właściwości obiektu tablicowego. Wartość właściwości length
nie może zostać zmieniona: samą właściwość length
można przypisać innym zmiennym, ale nic nie można do niej przypisać (program po prostu się nie skompiluje).
Oto jak kontynuować poprzedni przykład:
Kod | Wyjaśnienie |
---|---|
|
Utwórz zmienną tablicową typu int[] Jeśli zmienna jest a mniejsza niż 10 , utwórz tablicę 10 elementów. W przeciwnym razie utwórz tablicę 20 elementów Przejrzyj wszystkie elementy tablicy: od 0 i do długościarray.length — 1 |
4. Podsumowanie faktów dotyczących tablic Java
Podsumujmy znane fakty dotyczące tablic:
Fakt 1. Tablica składa się z wielu komórek.
Fakt 2. Dostęp do określonej komórki odbywa się poprzez wskazanie jej numeru.
Fakt 3. Wszystkie komórki są tego samego typu.
Fakt 4. Wartość początkowa dla wszystkich komórek to 0 i null
(jeśli adres jest przechowywany w komórce) false
(dla typu boolean
). Więcej o wartościach domyślnych dowiesz się w tym rozdziale .
Fakt 5. String[] list
to tylko deklaracja zmiennej: sam kontener (obiekt tablicy) nie został jeszcze utworzony. Aby móc z nim pracować, należy utworzyć tablicę (kontener) i umieścić go w tej zmiennej, a następnie użyć. Zobacz przykład poniżej.
Fakt 6. Kiedy tworzymy obiekt tablicowy (kontener), musimy określić, jak długi jest - ile zawiera komórek. Odbywa się to za pomocą polecenia takiego jak: new TypeName[n]
;
Fakt 7. Długość tablicy można znaleźć za pomocą właściwości .length
.
Fakt 8. Po utworzeniu tablicy nie można zmienić ani rodzaju jej elementów, ani ich liczby.
Kod | Wyjaśnienie |
---|---|
|
s równa się null list równanull |
|
Zmienna list przechowuje referencję do obiektu - tablicę ciągów 10 elementów. n równa się10 |
|
Teraz |
|
Zostanie wygenerowany wyjątek (błąd programu) - program ulegnie awarii. list zawiera pusty link -null |
|
Zostanie wygenerowany wyjątek (błąd programu) - tablica poza zakresem. Jeśli list zawiera 10 elementy/komórki, to ich dozwolonymi indeksami są: 0 1 2 3 4 5 6 7 8 9 - suma 10 sztuk. |
GO TO FULL VERSION