|
In acest tutorial vei invata cateva lucruri despre vectori in Java: declararea lor, adaugarea elementelor si accesarea unui element aflat la un anumit index.
Un vector, tablou sau array reprezinta un container pentru un numar de valori de acelasi tip. Lungimea sau dimensiunea unui vector este stabilita la crearea acestuia si nu poate fi modificata ulterior. Iata structura unui array:
Dupa cum poti observa in figura de mai sus, fiecarui element dintr-un vector ii corespunde un index numeric, cu ajutorul caruia poate fi accesat. Numerotarea elementelor incepe intotdeauna de la 0, ceea ce inseamna ca, de exemplu, cel de-al noualea element va fi accesat de indexul 8.
Urmatorul program, ArrayDemo, creeaza un vector de numere intregi carora le atribuie valori, afisate in cea de-a doua parte a programului:
class ArrayDemo {
public static void main(String[] args) {
int[] anArray;
anArray = new int[10];
anArray[0] = 100;
anArray[1] = 200;
anArray[2] = 300;
anArray[3] = 400;
anArray[4] = 500;
anArray[5] = 600;
anArray[6] = 700;
anArray[7] = 800;
anArray[8] = 900;
anArray[9] = 1000;
System.out.println("Elementul cu index 0: " + anArray[0]);
System.out.println("Elementul cu index 1: " + anArray[1]);
System.out.println("Elementul cu index 2: " + anArray[2]);
System.out.println("Elementul cu index 3: " + anArray[3]);
System.out.println("Elementul cu index 4: " + anArray[4]);
System.out.println("Elementul cu index 5: " + anArray[5]);
System.out.println("Elementul cu index 6: " + anArray[6]);
System.out.println("Elementul cu index 7: " + anArray[7]);
System.out.println("Elementul cu index 8: " + anArray[8]);
System.out.println("Elementul cu index 9: " + anArray[9]);
}
}
Codul de mai sus va afisa:
Elementul cu index 0: 100
Elementul cu index 1: 200
Elementul cu index 2: 300
Elementul cu index 4: 500
Elementul cu index 5: 600
Elementul cu index 6: 700
Elementul cu index 7: 800
Elementul cu index 8: 900
Elementul cu index 9: 1000
Desigur, in loc sa scrii fiecare linie separat, initializarile si afisarile de mai sus ar putea fi incluse intr-o singura bucla de executie (for, while sau do-while). Despre bucle de executie vei putea citi in urmatoarele tutoriale din aceasta serie.
Declararea unui vector
In exemplul de mai sus am declarat variabila de tip vector cu ajutorul urmatoarei linii de cod:
Asemeni variabilelor clasice, declararea unui array are doua componente: tipul si denumirea vectorului. Tipul unui vector este scris ca tip[], unde tip indica tipul de date al elementelor continute de acesta; parantezele patrate sunt simboluri speciale indicand ca variabila respectiva este un array. Ca si in cazul altor tipuri de variabile, declararea nu creeaza de fapt un vector - pur si simplu ii spune compilatorului ca variabila respectiva va detine un array de tipul specificat.
In mod similar, poti declara vectori de alte tipuri:
byte[] anArrayOfBytes;
short[] anArrayOfShorts;
long[] anArrayOfLongs;
float[] anArrayOfFloats;
double[] anArrayOfDoubles;
boolean[] anArrayOfBooleans;
char[] anArrayOfChars;
String[] anArrayOfStrings;
Parantezele patrate pot fi incluse si si dupa denumirea variabilei, dar, de dragul conventiilor, aceasta sintaxa nu este incurajata:
Crearea, initializarea si accesarea elementelor unui vector
Un vector poate fi creat utilizand operatorul new. Urmatoarea instructiune din programul ArrayDemo aloca memorie pentru zece elemente de tip int pentru vectorul nostru.
Daca aceasta instructiune ar lipsi, compilatorul ar afisa o eroare asemanatoare celei mai jos si programul ar esua:
ArrayDemo.java:4: Variable anArray may not have been initialized.
Urmatoarele linii atribuie valori fiecarui element al sirului:
anArray[0] = 100;
anArray[1] = 200;
anArray[2] = 300;
Alternativ, poti crea si initializa un vector in modul urmator:
int[] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};
In acest caz, lungimea vectorului este determinata de numarul de valori furnizate intre acolade.
Daca ai nevoie de un tablou multidimensional (matrice), il poti declara in mod similar unui vector, utilizand utilizand doua sau mai multe seturi de paranteze patrate:
Aceasta inseamna ca fiecare element din tabloul names va fi accesat de un numar corespunzator de indecsi. De exemplu:
In limbajul de programare Java, un tablou multidimensional este pur si simplu un vector ale carui componente sunt tot vectori. Din acest punct de vedere, Java nu se aseamana cu C sau Fortran. O consecinta a acestui aspect este ca vectorii elemente pot varia ca lungime, dupa cum se poate observa in urmatorul program MultiDimArrayDemo:
class MultiDimArrayDemo {
public static void main(String[] args) {
String[][] names = {{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones"}};
System.out.println(names[0][0] + names[1][0]);
System.out.println(names[0][2] + names[1][1]);
}
}
Codul de mai sus va afisa:
In sfarsit, dimensiunea unui vector poate fi determinata cu ajutorul metodei length. Astfel, instructiunea:
System.out.println(anArray.length);
va afisa dimensiunea vectorului anArray.
Copierea vectorilor
Clasa System detine o metoda arraycopy ce poate fi utilizata pentru copierea eficienta dintr-un vector in altul. Prototipul functiei este:
public static void arraycopy(Object src,
int srcPos,
Object dest,
int destPos,
int length)
Cei doi parametri de tip Object reprezinta vectorul din care (src) si vectorul in care (dest) se copiaza. Cele trei argumente int precizeaza pozitia de start din vectorul sursa (srcPos), pozitia de start din vectorul destinatie (destPos) si numarul elementelor ce trebuiesc copiate (length).
Urmatorul program, ArrayCopyDemo, declara un array de elemente char, scriind pe litere cuvantul "decofeinizat", apoi utilizeaza arraycopy pentru a copia o parte din acest vector intr-un al doilea vector:
class ArrayCopyDemo {
public static void main(String[] args) {
char[] copyFrom = { 'd', 'e', 'c', 'o', 'f', 'e',
'i', 'n', 'i', 'z', 'a', 't' };
char[] copyTo = new char[7];
System.arraycopy(copyFrom, 2, copyTo, 0, 10);
System.out.println(new String(copyTo));
}
}
Rezultatul acestui program este:
Rezumat
Un vector este un obiect container care detine un numar fix de valori de un singur tip. Lungimea unui vector este stabilita la crearea acestuia. Dupa creare, lungimea sa este fixata.
|