Dacă un program trebuie să funcționeze cu un număr de valori identice tip de date, puteți declara a variabil pentru fiecare număr. De exemplu, un program care afișează numere de loterie:
int loterieNumber1 = 16;
int loterieNumber2 = 32;
int loterieNumber3 = 12;
int loterieNumber4 = 23;
int loterieNumber5 = 33;int loterieNumber6 = 20;
O modalitate mai elegantă de a trata valorile care pot fi grupate este utilizarea unui tablou. Un tablou este un container care deține un număr fix de valori ale unui tip de date. În exemplul de mai sus, numerele loteriei pot fi grupate într-un tablou int:
int [] lotteryNumbers = {16,32,12,23,33,20};
Gândiți-vă la un tablou ca la un rând de căsuțe. Numărul de casete din tablă nu se poate modifica. Fiecare casetă poate păstra o valoare atât timp cât este de același tip de date ca și valorile conținute în celelalte casete. Puteți căuta în interiorul unei cutii pentru a vedea ce valoare conține sau înlocuiți conținutul căsuței cu o altă valoare. Când vorbim despre tablouri, căsuțele se numesc elemente.
Declarând și inițializând o matrice
Declarația de declarație pentru un tablou este similară cu cea obișnuită declară orice altă variabilă. Conține tipul de date urmat de numele tabloului - singura diferență este includerea parantezelor pătrate lângă tipul de date:
int [] intArray;
float [] floatArray;char [] charArray;
declarații mai sus spuneți compilatorului că
intArrayvariabilă este o serie de
Ints,
floatArrayeste o serie de
flotoareși
charArrayeste o serie de carari. Ca orice variabilă, ele nu pot fi utilizate până când nu a fost inițializată, atribuindu-i o valoare. Pentru un tablou, alocarea unei valori unui tablou trebuie să definească dimensiunea unui tablou:
intArray = int nou [10];
Numărul din paranteze definește câte elemente deține tabloul. Instrucțiunea de atribuire de mai sus creează un tablou int cu zece elemente. Desigur, nu există niciun motiv pentru care declarația și atribuirea nu se pot întâmpla într-o declarație:
float [] floatArray = new float [10];
Schițele nu sunt limitate la tipurile de date primitive. Puteți crea imagini de obiecte:
String [] nume = new String [5];
Folosind o matrice
După ce un tablou a fost inițializat, elementele pot avea valori atribuite acestora utilizând indexul tabloului. Indicele definește poziția fiecărui element din tablou. Primul element este la 0, al doilea element la 1 și așa mai departe. Este important de reținut că indicele primului element este 0. Este ușor să crezi că, deoarece un tablou are zece elemente, indicele este de la 1 la 10 în loc de la 0 la 9. De exemplu, dacă ne întoarcem la exemplul numerelor de loterie, putem crea un tablou care conține 6 elemente și să atribuim numerele de loterie elementelor:
int [] lotteryNumbers = int nou [6];
loterieNumeri [0] = 16;
loterieNumeri [1] = 32;
loterieNumeri [2] = 12;
loterieNumeri [3] = 23;
loterieNumeri [4] = 33;loterieNumeri [5] = 20;
Există o comandă rapidă pentru completarea elementelor dintr-un tablou prin introducerea valorilor pentru elementele din declarația de declarație:
int [] lotteryNumbers = {16,32,12,23,33,20};String [] names = {"John", "James", "Julian", "Jack", "Jonathon"};
Valorile pentru fiecare element sunt plasate în interiorul unei perechi de paranteze cretate. Ordinea valorilor determină ce element i se atribuie valoarea începând cu poziția indexului 0. Numărul de elemente din tablou este determinat de numărul de valori din parantezele cretate.
Pentru a obține valoarea unui element se folosește indexul său:
System.out.println ("Valoarea primului element este" + lotteryNumbers [0]);
Pentru a afla câte elemente are un câmp folosind câmpul lungime:
System.out.println ("Arhiva lotteryNumbers are" + lotteryNumbers.length + "elemente");
Notă: O greșeală obișnuită atunci când folosiți metoda lungimii este să uitați este să folosiți valoarea lungimii ca poziție de index. Aceasta va duce întotdeauna la o eroare, deoarece pozițiile indexului unui tablou sunt de la 0 la lungime - 1.
Arrayuri multidimensionale
Matricele la care ne-am uitat până acum sunt cunoscute sub numele de tablouri unidimensionale (sau unidimensionale). Aceasta înseamnă că au doar un rând de elemente. Cu toate acestea, matricile pot avea mai multe dimensiuni. Un multidimensional este de fapt un tablou care conține tablouri:
int [] [] lotteryNumbers = {{16,32,12,23,33,20}, {34,40,3,11,33,24}};
Indicele pentru un tablou multidimensional este format din două numere:
System.out.println ("Valoarea elementului 1,4 este" + lotteryNumbers [1] [4]);
Deși lungimea tablelor conținute într-un tablou multidimensional nu trebuie să fie aceeași lungime:
String [] [] nume = String nou [5] [7];
Copierea unei matrici
Pentru a copia un tablou, cel mai simplu mod este să utilizați
arraycopymetoda clasei System.
arraycopymetoda poate fi utilizată pentru a copia toate elementele unui tablou sau o subsecțiune a acestora. Există cinci parametri trecuți la
arraycopymetoda - tabloul original, poziția indexului pentru a începe copierea unui element din, noul tablou, poziția indexului pentru a începe să insereze, numărul de elemente de copiat:
public static vid vid arraycopy (Object src, int srcPos, Obiect dest, int destPos, int lungime)
De exemplu, pentru a crea un nou tablou care conține ultimele patru elemente ale unui
intmatrice:
int [] lotteryNumbers = {16,32,12,23,33,20};
int [] newArrayNumbers = new int [4];System.arraycopy (lotteryNumbers, 2, newArrayNumbers, 0, 4);
Deoarece matricile au o lungime fixă,
arraycopymetoda poate fi un mod util de a modifica dimensiunea unui tablou.
Pentru a vă cunoaște mai mult despre tablouri, puteți afla despre manipularea tablelor folosind Array-uri clasă și realizarea tablourilor dinamice (adică, matricile atunci când numărul de elemente nu este un număr fix) folosind Clasa ArrayList.