1. Matrice în memorie
În exemplele anterioare, ilustrațiile erau puțin inexacte.
La crearea matricelor (ca și la crearea șirurilor de caractere), sunt alocate două blocuri separate de memorie: unul pentru stocarea matricei ( container) în sine și un al doilea bloc pentru variabila care își stochează adresa . Imaginea de mai jos reprezintă această clarificare:
Memoria alocată pentru tabloul de 10
int
elemente și int[]
variabila care stochează adresa matricei int
, este afișată cu verde.
Pentru comparație, o variabilă obișnuită int
care stochează valoarea 199
este afișată cu albastru.
Asta amintește puțin de stocarea șirurilor în memorie, nu crezi?
Așa e, șiruri. Și la fel ca atunci când lucrați cu șiruri de caractere, puteți atribui variabile de matrice unul altuia:
Cod | Explicaţie |
---|---|
|
Creați o serie de 10 int elemente. Atribuiți valoarea 4 celulei cu index 2 . Atribuiți valoarea 9 celulei cu index 7 . În b variabilă, salvați adresa stocată în a variabilă. Acum a și b indicați către același obiect matrice din memorie. În celula obiectului matrice cu index 9 , scrieți suma valorilor care sunt stocate în celule 2 (care stochează valoarea 4 ) și 7 (care stochează valoarea 9 ). |
Obiectul matrice rămâne exact unde a fost, iar variabilele a
și b
stochează aceeași adresă (referință) la același obiect. Uitate la imagine:

2. Mai multe detalii despre lucrul cu matrice
Puteți crea o serie de elemente de absolut orice tip. Pentru a face acest lucru, pur și simplu scrieți paranteze drepte după numele tipului. În general, crearea unei matrice arată astfel:
type[] name = new type[number];
Unde tip este tipul elementelor pe care le vom stoca în matrice. Nume este numele variabilei pe care o vom folosi pentru a face referire la matrice, iar numărul este numărul de celule din matrice.
Exemplul de mai sus este forma canonică pentru crearea unei variabile matrice și a unui obiect matrice. În realitate, acestea sunt două entități separate.
Puteți crea o variabilă matrice separat de un obiect matrice:
type[] name;
name = new type[number];
Și încă un punct care nu este de neînsemnat:
Exemple:
Cod | Explicaţie |
---|---|
|
Creați o serie de n elemente |
|
Creați o matrice cu 203 elemente |
|
|
0..99
un ArrayIndexOfBoundException
, ceea ce înseamnă că indexul era în afara limitelor matricei.
3. Lungimea matricei
După cum ați văzut în exemplul anterior, puteți crea o variabilă matrice de la sine și apoi îi puteți atribui o valoare (o referință la un obiect matrice) undeva în cod. Poți chiar să faci asta:
Cod | Explicaţie |
---|---|
|
Creați o variabilă matrice al cărei tip este int[] Dacă a variabila este mai mică decât 10 , atunci creați o matrice de 10 elemente. În caz contrar, creați o serie de 20 elemente |
Și acum ce altceva poți face cu o astfel de matrice? De unde știi câte elemente sunt în el?
Pentru a ajuta la aceasta, tablourile au o proprietate specială (variabilă) numită length
. Puteți găsi lungimea unui tablou folosind această expresie:
array.length;
Aici array
este numele variabilei matricei și length
este numele proprietății matricei. Valoarea proprietății length
nu poate fi modificată: length
proprietatea în sine poate fi atribuită altor variabile, dar nu i se poate atribui nimic (dacă încercați să faceți acest lucru, programul pur și simplu nu se va compila).
Putem continua cu exemplul anterior astfel:
Cod | Explicaţie |
---|---|
|
Creați o variabilă matrice al cărei tip este int[] Dacă a variabila este mai mică decât 10 , atunci creați o matrice de 10 elemente. În caz contrar, creați o matrice de 20 elemente Buclă peste toate elementele matricei: de la 0 până la lungimearray.length - 1 |
4. Rezumatul faptelor despre matrice în Java
Să recapitulăm ceea ce știm despre matrice:
Faptul 1. O matrice este formată din mai multe celule.
Faptul 2. Accesați o anumită celulă folosind numărul acesteia (index).
Faptul 3. Toate celulele sunt de același tip.
Faptul 4. Valoarea inițială a tuturor celulelor este 0 (dacă celulele stochează numere), null
(dacă celulele stochează referințe la obiecte) sau false
(dacă celulele stochează boolean
valori). Veți afla mai multe despre valorile implicite în acest capitol .
Faptul 5. String[] list
este doar declarația unei variabile. Acest lucru nu creează containerul (obiectul matrice) în sine. Pentru a utiliza variabila, trebuie mai întâi să creați o matrice (container) și să o atribuiți variabilei. Vezi exemplul de mai jos.
Faptul 6. Când creăm un obiect matrice (container), trebuie să indicăm cât de mare este acesta, adică câte celule conține. Acest lucru se face cu o declarație de genul: new TypeName[n]
;
Faptul 7. Lungimea unui tablou poate fi găsită folosind .length
proprietatea.
Faptul 8. După crearea unui tablou, nu puteți modifica tipul elementelor sale sau numărul de elemente pe care le stochează.
Cod | Explicaţie |
---|---|
|
s este null list estenull |
|
Variabila list stochează o referință la un obiect: o matrice de șiruri formată din 10 elemente. n este10 |
|
Acum |
|
Se va arunca o excepție (eroare de program), adică programul se va bloca. list stochează o referință lanull |
|
Va fi generată o excepție de tip matrice în afara limitelor (eroare de program). Dacă un list stochează 10 elemente/celule, atunci indicii validi sunt: 0 1 2 3 4 5 6 7 8 9 — 10 elemente. |
GO TO FULL VERSION