cursul 5 Tablouri de obiecte Programare Orientat pe Obiecte cursul 5 2 Zoltan Hascsi Tablou de obiecte Grupuri de obiecte de acelai fel. Exemple: vector de numere ir de caractere grup de studeni teanc de CV-uri, unele mai scurte, altele mai lungi Obiectele dintr-un tablou de obiecte sunt ordonate i fiecare obiect are un numr de ordine, numit index. Accesul unui obiect din tablou se face pe baza acestui index. Indexul este un numr natural, ntre 0 i n-1, unde n este numrul obiectelor tabloului (lungimea tabloului). tablou = vector = matrice = arie = colecie Programare Orientat pe Obiecte cursul 5 3 Zoltan Hascsi Tablou de obiecte. Exemple vector de numere. Primele 10 numere prime: ir de caractere. Iniialele zilelor sptmnii:
L M M J V S D 0 index 1 2 3 4 5 6 Programare Orientat pe Obiecte cursul 5 4 Zoltan Hascsi Tablou de obiecte. Exemple grup de 3 studeni.
n_POO n_DCE 10 10 n_POO n_DCE 7 10 n_POO n_DCE 10 7 st udent [ 0] st udent [ 1] st udent [ 2] Programare Orientat pe Obiecte cursul 5 5 Zoltan Hascsi Tablou de obiecte. Exemple tabel de nume i prenume: Observaie: J ava permite construirea tablourilor multidimensionale neregulate.
Li vi u 0 index rnd Rebr eanu Cami l Pet r escu Hor t ensi a Papadat Bengescu 1 2 Mi r cea El i ade 3 0 1 2 index coloan Programare Orientat pe Obiecte cursul 5 6 Zoltan Hascsi Tabloul este un obiect Obiectul tablou ncapsuleaz un vector unidimensional de variabile: un vector de variabile de tip primitiv n cazul tabloului de tip primitiv; un vector de variabile referin n cazul tabloului de obiecte; Tipul tabloului este tipul elementelor tabloului. Numele tabloului este o referin la obiectul tablou. ncapsularea permite controlul accesului elementelor tabloului. Orice ncercare de acces dincolo de limitele tabloului se soldeaz cu un eec (excepie). Programare Orientat pe Obiecte cursul 5 7 Zoltan Hascsi Tabloul este un obiect Obiectul tablou ncapsuleaz elementele tabloului i un parametru care indic numrul de elemente, lungimea tabloului (l engt h). Numele tabloului este o variabil referin la tabloul propriu-zis.
10 l engt h 0
1
9
numele tabloului obiectul tablou referina la obiectul tablou elementele tabloului indecii elementelor tabloului Programare Orientat pe Obiecte cursul 5 8 Zoltan Hascsi Declararea unui tablou de tip primitiv Se specific tipul elementelor i numele tabloului: Tip [ ] numeTablou; Parantezele ptrate indic faptul c este vorba de o declaraie de obiect tablou i nu o declaraie de variabil de tip primitiv. Exemple: int [ ] a; int [ ] al t Tabl ouDeI nt r egi ; char[ ] t abl ouDeCar act er e; ntre parantezele ptrate nu se scrie nimic: int [ 3] a; / / er oar e l a compi l ar e! Programare Orientat pe Obiecte cursul 5 9 Zoltan Hascsi Crearea tabloului de variabile de tip primitiv Ca orice alt obiect din J ava un tablou de variabile este creat (instaniat) cu ajutorul instruciunii new : numeTablou = new Tip [ nrElemente] ; Specificarea numrului de elemente este obligatorie. Numrul de elemente (lungimea tabloului) este un cmp al obiectului tablou, numit l engt h, care este iniializat la instanierea obiectului tablou i care nu poate fi modificat. Cmpul l engt h este accesibil ca orice cmp public al unui obiect oarecare: numeTablou.l engt h dar numai pentru citire! Programare Orientat pe Obiecte cursul 5 10 Zoltan Hascsi Crearea tabloului de variabile de tip primitiv La instanierea unui tablou de variabile de tip primitiv elementele tabloului, variabilele de tip primitiv, sunt iniializate implicit n: 0 pentru variabilele de tip ntreg (byte, short, int, long); 0. 0 pentru variabilele de tip real (float, double); caracterul nul (neprintabil), ' \ 0' , pentru variabilele de tip char; false pentru variabilele de tip boolean; Programare Orientat pe Obiecte cursul 5 11 Zoltan Hascsi Accesul la elementele tabloului Dup instaniere elementele tabloului pot fi accesate folosind sintaxa clasic de acces pe baza indexului care indic poziia elementului: numeTablou[ indexElement] Indexul primului element este 0. Pentru un tablou de lungime n indexul ultimului element este n-1. 0
1
2 indexul primului element indexul ultimului element tablou cu 3 elemente Programare Orientat pe Obiecte cursul 5 12 Zoltan Hascsi Accesul la elementele tabloului indexElement este fie o constant ntreag pozitiv, fie o variabil de tip int, fie o expresie al crei rezultat este de tip int. numeTablou[ indexElement] Exemple: a[ 5] a[ i ] a[ 100 + i + j ] a[ ( int) ( Math. r andom( ) *a. l engt h) ] unde i i j sunt variabile de tip int, iar expresia Math. r andom( ) *a. l engt h ntoarce un rezultat de tip double care trebuie convertit n tipul int (are loc i o trunchiere). Programare Orientat pe Obiecte cursul 5 13 Zoltan Hascsi Exemplu: un tablou simplu de ntregi int[ ] a; // declararea tabloului
null a Programare Orientat pe Obiecte cursul 5 14 Zoltan Hascsi Exemplu: un tablou simplu de ntregi int[ ] a; / / decl ar ar ea t abl oul ui new int[ 3] ; // crearea obiectului tablou
3 l engt h 0 0 0 1 0 2 nul l a Programare Orientat pe Obiecte cursul 5 15 Zoltan Hascsi Exemplu: un tablou simplu de ntregi int[ ] a; / / decl ar ar ea t abl oul ui a = new int[ 3] ; // crearea obiectului tablou
3 l engt h 0 0 0 1 0 2 a Programare Orientat pe Obiecte cursul 5 16 Zoltan Hascsi Exemplu: un tablou simplu de ntregi int[ ] a; / / decl ar ar ea t abl oul ui a = new int[ 3] ; / / cr ear ea obi ect ul ui t abl ou a[ 0] = 10; // accesul unui element al tabloului
3 l engt h 10 0 0 1 0 2 a Programare Orientat pe Obiecte cursul 5 17 Zoltan Hascsi Exemplu: un tablou simplu de ntregi int[ ] a; / / decl ar ar ea t abl oul ui a = new int[ 3] ; / / cr ear ea obi ect ul ui t abl ou a[ 0] = 10; / / accesul unui el ement al t abl oul ui a[ 3] = 9; // acces nepermis Except i on i n t hr ead . . . j ava. l ang. ArrayIndexOutOfBoundsException: 3
3 l engt h 10 0 0 1 0 2 a Programare Orientat pe Obiecte cursul 5 18 Zoltan Hascsi Iniializarea tabloului de tip primitiv Declararea tabloului poate fi combinat cu o iniializare folosind sintaxa: Tip [ ] numeTablou = {el ement 0, el ement 1, . . . }; Lungimea tabloului va fi fixat de numrul de termeni dintre acolade. Fiecare termen dintre acolade poate fi: constant expresie care are ns neaprat tipul corespunztor declaraiei tabloului. Programare Orientat pe Obiecte cursul 5 19 Zoltan Hascsi Iniializarea tabloului de tip primitiv Exemple: / / t abl ou de 10 i nt r egi int[ ] pr i m= {2, 3, 5, 7, 11, 13, 17, 19, 23, 29}; / / t abl ou de 7 car act er e char[ ] zi = {' L' , ' M' , ' M' , ' J ' , ' V' , ' S' , ' D' }; / / t abl ou de 2 i nt r egi int g1 = 421; int g2 = 422; int [ ] gr upeExamen = {g1, g2 + 2}; expresie care ntoarce un tip int Programare Orientat pe Obiecte cursul 5 20 Zoltan Hascsi Declararea unui tablou de obiecte Se specific tipul elementelor i numele tabloului: NumeClas [ ] numeTablou; Elementele tabloului sunt referine la obiecte de tipul clasei declarate. Tabloul de obiecte este de fapt un tablou de variabile referin la obiect. Exemple: Student[ ] gr upa421F; Student[ ] gascaDeRevel i on; String [ ] numeZi ; ntre parantezele ptrate nu se scrie nimic: Student[ 30] gr upa421F; / / er oar e l a compi l ar e! Programare Orientat pe Obiecte cursul 5 21 Zoltan Hascsi Crearea tabloului de obiecte Ca orice alt obiect din J ava un tablou de obiecte este creat (instaniat) cu ajutorul instruciunii new : numeTablou = new NumeClas [ nrElemente] ; Specificarea numrului de elemente este obligatorie. Numrul de elemente (lungimea tabloului) este un cmp al obiectului tablou, numit l engt h, care este iniializat la instanierea obiectului tablou i care nu poate fi modificat. Cmpul l engt h este accesibil ca orice cmp public al unui obiect oarecare: numeTablou.l engt h dar numai pentru citire! Programare Orientat pe Obiecte cursul 5 22 Zoltan Hascsi Crearea tabloului de obiecte La instanierea unui tablou de obiecte, elementele tabloului, variabile referin la obiect, sunt iniializate n null. Dup instanierea tabloului, elementele lui nu pot fi accesate dect dup ce referinelor li se atribuie o adres valid, fie prin instanierea unui obiect corespunztor, fie prin copierea unei referine la un obiect de tipul declarat. Programare Orientat pe Obiecte cursul 5 23 Zoltan Hascsi Accesul unui obiect dintr-un tablou de obiecte Accesul unui element al unui tablou de obiecte este accesul la obiectul la care face referire elementul propriu-zis al tabloului. Obiectul este identificat prin numele tabloului i indexul la care se afl: numeTablou[ indexElement] Indexul are aceleai constrngeri ca n cazul tablourilor de variabile de tip primitiv. Accesul membrilor (cmpuri sau metode) obiectului se face folosind sintaxa clasic de acces a obiectelor: numeTablou[ indexElement] . numeCmp sau numeTablou[ indexElement] . numeMetod Programare Orientat pe Obiecte cursul 5 24 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; // declararea tabloului
null
gr upa Programare Orientat pe Obiecte cursul 5 25 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui new Student[ 3] ; // crearea tabloului
3 l engt h null 0 null 1 null 2 nul l gr upa
Programare Orientat pe Obiecte cursul 5 26 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui gr upa = new Student[ 3] ; // crearea tabloului
3 l engt h nul l 0 nul l 1 nul l 2
gr upa
Programare Orientat pe Obiecte cursul 5 27 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui new Student( ) ; / / i nst ant i er ea unui obi ect St udent
3 l engt h nul l 0 nul l 1 nul l 2
0 gr upa obiect St udent Programare Orientat pe Obiecte cursul 5 28 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui gr upa[ 0] new Student( ) ; / / i nst ant i er ea unui obi ect St udent
3 l engt h nul l 0 nul l 1 nul l 2
0 gr upa obiect St udent Programare Orientat pe Obiecte cursul 5 29 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui gr upa[ 0] = new Student( ) ; / / i nst ant i er ea unui obi ect St udent care face parte din tablou.
3 l engt h 0 nul l 1 nul l 2 a
0 gr upa obiect St udent Programare Orientat pe Obiecte cursul 5 30 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui gr upa[ 0] = new Student( ) ; / / i nst ant i er ea unui obi ect St udent car e f ace par t e di n t abl ou. gr upa[ 1] = new Student( ) ; // instantierea altui obiect Student care face parte din tablou.
3 l engt h 0 1 nul l 2 a
0 gr upa
0 Programare Orientat pe Obiecte cursul 5 31 Zoltan Hascsi Exemplu: un tablou de obiecte Student[ ] gr upa; / / decl ar ar ea t abl oul ui gr upa = new Student[ 3] ; / / cr ear ea t abl oul ui gr upa[ 0] = new Student( ) ; / / i nst ant i er ea unui obi ect St udent car e f ace par t e di n t abl ou. gr upa[ 1] = new Student( ) ; / / i nst ant i er ea al t ui obi ect St udent car e f ace par t e di n t abl ou. gr upa[ 1] . nr _cr edi t e = 60; // accesul unui element
3 l engt h 0 1 nul l 2 a
0 gr upa
60 Programare Orientat pe Obiecte cursul 5 32 Zoltan Hascsi Iniializarea tablourilor de obiecte Declaraia unui tablou de obiecte poate fi combinat cu o iniializare folosind sintaxa cu paranteze acolade: NumeClas [ ] numeTablou = {el ement 0, el ement 1, . . . }; Lungimea tabloului va fi fixat de numrul de termeni dintre acolade. Fiecare termen dintre acolade poate fi: referin instaniere care are ns neaprat clasa corespunztoare declaraiei tabloului. Programare Orientat pe Obiecte cursul 5 33 Zoltan Hascsi Iniializarea tablourilor de obiecte Exemplu de iniializare prin referine: Student s_a = new Student( ) ; Student s_b = new Student( ) ; Student s_c = new Student( ) ; Student [ ] gr upPr oi ect = {s_a, s_b, s_c}; Exemplu de iniializare prin prin instaniere: Student [ ] gr upPr oi ect = {new Student( ) , new Student( ) , new Student( ) }; Programare Orientat pe Obiecte cursul 5 34 Zoltan Hascsi Tablou bidimensional Tablourile fiind obiecte pot fi la rndul lor grupate n tablouri de obiecte. Tabloul bidimensional este un tablou de obiecte tablou. Tabloul de pe primul nivel este un tablou de referine la tablourile de pe al doilea nivel. Tablourile de pe ultimul nivel pot fi tablouri de variabile de tip primitiv sau tablouri de obiecte (de referine la obiecte). Toate tablourile de pe ultimul nivel au elemente de acelai tip, tipul din declaraia tabloului bidimensional. Tablourile de pe ultimul nivel pot fi de lungimi diferite. Programare Orientat pe Obiecte cursul 5 35 Zoltan Hascsi Tablou bidimensional: declarare Analog declarrii tabloului simplu, singura diferen fiind prezena a dou perechi de paranteze ptrate: Tip [ ] [ ] numeTablou; ntre parantezele ptrate nu se scrie nimic. Exemple: int[ ] [ ] a; String [ ] [ ] r omanci er i I nt er bel i ci ; Programare Orientat pe Obiecte cursul 5 36 Zoltan Hascsi Tablou bidimensional: instaniere complet Analog instanierii obiectelor obinuite, folosete instruciunea new: numeTablou = new Tip[ nr_rnduri] [ nr_coloane] ; Se specific lungimea pe fiecare dimensiune. Permite doar instanierea tablourilor dreptunghiulare. Lungimile pot fi constante de tip int, variabile de tip int sau expresii al cror rezultat este de tip int. Exemple: int[ ] [ ] a = new int[ 2] [ 3] ; int[ ] [ ] a = new int[ i ] [ i +1] ; Programare Orientat pe Obiecte cursul 5 37 Zoltan Hascsi Tablou bidimensional: instaniere complet Exemplu: int[ ] [ ] a = new int[ 2] [ 3] ; Toate tablourile de pe ultimul nivel au aceeasi lungime.
2 l engt h 0 1 a 3 l engt h 0 0 0 1 0 2 3 l engt h 0 0 0 1 0 2 Programare Orientat pe Obiecte cursul 5 38 Zoltan Hascsi Tablou bidimensional: instaniere parial Se instaniaz doar obiectul tablou de pe primul nivel: numeTablou = new Tip [ nr_rnduri] [ ] ; Se specific doar lungimea tabloului de pe primul nivel (numrul de rnduri). Permite construirea tablourilor neregulate, cu tablouri pe nivelul inferior de lungimi diferite. Exemple: int[ ] [ ] a = new int[ 2] [ ] ; int[ ] [ ] a = new int[ i ] [ ] ; Dup instanierea parial pot fi accesate numai elementele de pe primul nivel: numeTablou[ index_rnd] Programare Orientat pe Obiecte cursul 5 39 Zoltan Hascsi Exemplu: un tablou bidimensional int[ ] [ ] a; // declararea tabloului
null a Programare Orientat pe Obiecte cursul 5 40 Zoltan Hascsi Exemplu: un tablou bidimensional int[ ] [ ] a; / / decl ar ar ea t abl oul ui a = new int[ 2] [ ] ; // instantierea primului nivel
2 l engt h null 0 null 1 a Programare Orientat pe Obiecte cursul 5 41 Zoltan Hascsi Exemplu: un tablou bidimensional int[ ] [ ] a; / / decl ar ar ea t abl oul ui a = new int[ 2] [ ] ; / / i nst ant i er ea pr i mul ui ni vel a[ 0] = new int[ 2] ; // instantiere pe ultimul nivel
2 l engt h 0 nul l 1 a 2 l engt h 0 0 0 1 Programare Orientat pe Obiecte cursul 5 42 Zoltan Hascsi Exemplu: un tablou bidimensional int[ ] [ ] a; / / decl ar ar ea t abl oul ui a = new int[ 2] [ ] ; / / i nst ant i er ea pr i mul ui ni vel a[ 0] = new int[ 2] ; / / i nst ant i er e pe ul t i mul ni vel a[ 1] = new int[ 3] ; // instantiere pe ultimul nivel
2 l engt h 0 1 a 3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 Programare Orientat pe Obiecte cursul 5 43 Zoltan Hascsi Exemplu: un tablou bidimensional int[ ] [ ] a; / / decl ar ar ea t abl oul ui a = new int[ 2] [ ] ; / / i nst ant i er ea pr i mul ui ni vel a[ 0] = new int[ 2] ; / / i nst ant i er e pe ul t i mul ni vel a[ 1] = new int[ 3] ; / / i nst ant i er e pe ul t i mul ni vel a[ 1] [ 2] = 2007; // acces 2 l engt h 0 1 a 3 l engt h 0 0 0 1 2007 2 2 l engt h 0 0 0 1 Programare Orientat pe Obiecte cursul 5 44 Zoltan Hascsi Tablou bidimensional: iniializare complet int[ ] [ ] a = {{11, 13}, {17, 19, 21}}; Lungimea fiecrui tablou este dat de numrul de elemente dintre parantezele acolade corespunztoare.
2 l engt h 0 1 a 3 l engt h 17 0 19 1 21 2 2 l engt h 11 0 13 1 Programare Orientat pe Obiecte cursul 5 45 Zoltan Hascsi Tablou bidimensional: iniializare complet int[ ] [ ] a = {{11, 13}, {17, 19, 21}}; a. l engt h este lungimea tabloului de pe primul nivel. a[ 1] . l engt h este lungimea tabloului la care face referire elementul a[ 1] al tabloului de pe primul nivel. 2 elemente nivelul 1 3 elemente 2 elemente nivelul 0 Programare Orientat pe Obiecte cursul 5 46 Zoltan Hascsi Tablou bidimensional: iniializare cu referine int[ ] b = new int [ 2] ; int[ ] c = new int [ 3] ;
3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 b c Programare Orientat pe Obiecte cursul 5 47 Zoltan Hascsi Tablou bidimensional: iniializare cu referine int[ ] b = new int [ 2] ; int[ ] c = new int [ 3] ; { , }
2 l engt h 0 1
3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 b c Programare Orientat pe Obiecte cursul 5 48 Zoltan Hascsi Tablou bidimensional: iniializare cu referine int[ ] b = new int [ 2] ; int[ ] c = new int [ 3] ; {b, c}
2 l engt h 0 1
3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 b c Programare Orientat pe Obiecte cursul 5 49 Zoltan Hascsi Tablou bidimensional: iniializare cu referine int[ ] b = new int [ 2] ; int[ ] c = new int [ 3] ; {b, c}
2 l engt h 0 1
3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 b c Programare Orientat pe Obiecte cursul 5 50 Zoltan Hascsi Tablou bidimensional: iniializare cu referine int[ ] b = new int [ 2] ; int[ ] c = new int [ 3] ; int[ ] [ ] a {b, c}
2 l engt h 0 1 a 3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 b c Programare Orientat pe Obiecte cursul 5 51 Zoltan Hascsi Tablou bidimensional: iniializare cu referine int[ ] b = new int [ 2] ; int[ ] c = new int [ 3] ; int[ ] [ ] a = {b, c};
2 l engt h 0 1 a 3 l engt h 0 0 0 1 0 2 2 l engt h 0 0 0 1 b c Programare Orientat pe Obiecte cursul 5 52 Zoltan Hascsi Tablou bidimensional. Recapitulare int[ ] [ ] a = new int[ 2] [ ] ; a[ 0] = new int[ 2] ; a[ 1] = new int[ 3] ; a[ 0] [ 0] = 11; . . . int[ ] [ ] a = {new int[ 2] , new int[ 3] }; a[ 0] [ 0] = 11; . . . int[ ] b = new int[ 2] ; b[ 0] = 11; . . . int[ ] c = new int[ 3] ; c[ 0] = 17; . . . int[ ] [ ] a = {b, c}; int[ ] [ ] a = {{11, 13}, {17, 19, 21}; int[ ] b = new int[ 2] ; int[ ] c = new int[ 3] ; int[ ] [ ] a = {b, c}; a[ 0] [ 0] = 11; . . . Programare Orientat pe Obiecte cursul 5 53 Zoltan Hascsi Lungimea pe dimensiuni a. l engt h este lungimea tabloului de pe primul nivel.
2 l engt h 0 1 a 3 l engt h 17 0 19 1 21 2 2 l engt h 11 0 13 1 Programare Orientat pe Obiecte cursul 5 54 Zoltan Hascsi Lungimea pe dimensiuni a[ 1] . l engt h este lungimea tabloului la care face referire elementul a[ 1] al tabloului de pe primul nivel.
2 l engt h 0 1 a 3 l engt h 17 0 19 1 21 2 2 l engt h 11 0 13 1 Programare Orientat pe Obiecte cursul 5 55 Zoltan Hascsi Tablou multidimensional Tabloul multidimensional este o ierarhie de tablouri. Cu excepia ultimului nivel toate celelalte tablouri sunt tablouri de referine. Tablourile de pe ultimul nivel pot fi tablouri de variabile de tip primitiv sau tablouri de obiecte (de referine la obiecte). Tablourile de pe ultimul nivel au elemente de acelai tip, tipul din declaraia tabloului multidimensional. Fiecare tablou poate avea orice lungime, dar odat iniializat lungimea lui nu se poate schimba. Programare Orientat pe Obiecte cursul 5 56 Zoltan Hascsi Tablou de obiecte tablou Orice declaraie de tablou multidimensional poate fi privit ca o declaraie de tablou de variabile (de tip primitiv sau referin). Tip [ ] numeTablou; Tip este int => tablou de ntregi: int[ ] numeTablou; Tip este int[ ] => tablou de tablouri de ntregi: int[ ] [ ] numeTablou; Tip este int[ ] [ ] => tablou de tablouri bidimensionale de ntregi: int[ ] [ ] [ ] numeTablou; tipul ariei Programare Orientat pe Obiecte cursul 5 57 Zoltan Hascsi Instanieri pariale Se instaniaz obiectele tablou de pe nivelele superioare. Exemple: int[ ] [ ] [ ] a = new int[ 2] [ ] [ ] ; int[ ] [ ] [ ] a = new int[ 2] [ 3] [ ] ; Nu se admit instanieri pariale ncepnd cu nivelele inferioare, sau care specific lungimile pe srite: int[ ] [ ] [ ] a = new int[ ] [ 3] [ ] ; int[ ] [ ] [ ] a = new int[ ] [ 3] [ 4] ; int[ ] [ ] [ ] a = new int[ 2] [ ] [ 4] ; Programare Orientat pe Obiecte cursul 5 58 Zoltan Hascsi
2 l engt h 0 1 a 2 l engt h 0 1 2 l engt h 0 1 2 l engt h 0 0 0 1 2 l engt h 0 0 0 1 2 l engt h 0 0 0 1 2 l engt h 2007 0 0 1 [1] [0] [0] Tablou multidimensional int [ ] [ ] [ ] a = a[ 2] [ 2] [ 2] ; a[ 1] [ 0] [ 0] = 2007;