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ę 10elementów typu inti zmienną typu int[], która przechowuje adres (referencję) tablicy typów intw pamięci.
intDla 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ę 10elementó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 ). 2479baab92479 |
W takim przypadku obiekt tablica pozostanie tam, gdzie był, a zmienne ai bbę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 nelementów |
|
Tworzenie tablicy dla każdego 203elementu |
|
|
0..99jest
ArrayIndexOfBoundExceptionpoza 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 amniejsza niż 10, utwórz tablicę 10elementów. W przeciwnym razie utwórz tablicę 20elementó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 arrayjest nazwą zmiennej tablicowej i lengthjest nazwą właściwości obiektu tablicowego. Wartość właściwości lengthnie może zostać zmieniona: samą właściwość lengthmoż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 amniejsza niż 10, utwórz tablicę 10elementów. W przeciwnym razie utwórz tablicę 20elementów Przejrzyj wszystkie elementy tablicy: od 0i 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 |
|---|---|
|
srówna się nulllistrównanull |
|
Zmienna listprzechowuje referencję do obiektu - tablicę ciągów 10elementów. nrówna się10 |
|
Teraz |
|
Zostanie wygenerowany wyjątek (błąd programu) - program ulegnie awarii. listzawiera pusty link -null |
|
Zostanie wygenerowany wyjątek (błąd programu) - tablica poza zakresem. Jeśli listzawiera 10elementy/komórki, to ich dozwolonymi indeksami są: 0 1 2 3 4 5 6 7 8 9- suma 10sztuk. |
GO TO FULL VERSION