O matrice multidimensională. Cele mai frecvent utilizate matrice multidimensionale sunt matricele 2-D și 3-D. Putem spune că orice matrice dimensională mai mare este practic o matrice de matrice. Un exemplu foarte comun de matrice 2D este tabla de șah. O tablă de șah este o grilă care conține 64 de cutii pătrate 1×1. În mod similar, puteți vizualiza o matrice 2D. Într-o matrice 2D, fiecare element este asociat cu un număr de rând și un număr de coloană. Accesarea oricărui element al matricei 2D este similară cu accesarea înregistrării unui fișier Excel folosind atât numărul rândului, cât și numărul coloanei. Matricele 2D sunt utile atunci când implementați un joc Tic-Tac-Toe, șah sau chiar stocarea pixelilor imaginii.

Declararea matricei 2-D în Java:
Orice matrice bidimensională poate fi declarată după cum urmează:
Sintaxă:
data_type array_name[][]; (SAU) data_type[][] array_name;
- data_type: Deoarece Java este un limbaj tip static (adică se așteaptă ca variabilele sale să fie declarate înainte de a li se putea atribui valori). Deci, specificarea tipului de date decide tipul de elemente pe care le va accepta. de exemplu. pentru a stoca numai valori întregi, tipul de date va fi declarat ca int. array_name: este numele care este dat matricei 2-D. de exemplu. subiecte, studenți, fructe, catedra etc.
Notă: Putem scrie [ ][ ] după data_type sau putem scrie [ ][ ] după array_name în timp ce declarăm tabloul 2D.
Java
// java program showing declaration of arrays> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> > >int>[][] integer2DArray;>// 2D integer array> >String[][] string2DArray;>// 2D String array> >double>[][] double2DArray;>// 2D double array> >boolean>[][] boolean2DArray;>// 2D boolean array> >float>[][] float2DArray;>// 2D float array> >double>[][] double2DArray;>// 2D double array> >}> }> |
>
>
Diferite abordări pentru inițializarea matricei 2-D în Java:
data_type[][] array_Name = nou tip_date[nr_rânduri][nr_de_coloane];
Totalul elementelor din orice matrice 2D va fi egal cu (no_of_rows) * (no_of_columns).
- no_of_rows: numărul de rânduri dintr-o matrice. de exemplu. no_of_rows = 3, atunci tabloul va avea trei rânduri. no_of_columns: numărul de coloane dintr-o matrice. de exemplu. no_of_columns = 4, atunci matricea va avea patru coloane.
Sintaxa de mai sus a inițializării matricei va atribui valori implicite tuturor elementelor matricei în funcție de tipul de date specificat.
Mai jos este implementarea diferitelor abordări pentru inițializarea matricelor 2D:
Abordarea 1:
Java
în ordine
// java program to initialize a 2D array> import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// Declaration along with initialization> >// 2D integer array with 5 rows and 3 columns> >// integer array elements are initialized with 0> >int>[][] integer2DArray =>new> int>[>5>][>3>];> >System.out.println(> >'Default value of int array element: '> >+ integer2DArray[>0>][>0>]);> > >// 2D String array with 4 rows and 4 columns> >// String array elements are initialized with null> >String[][] string2DArray =>new> String[>4>][>4>];> >System.out.println(> >'Default value of String array element: '> >+ string2DArray[>0>][>0>]);> > >// 2D boolean array with 3 rows and 5 columns> >// boolean array elements are initialized with false> >boolean>[][] boolean2DArray =>new> boolean>[>4>][>4>];> >System.out.println(> >'Default value of boolean array element: '> >+ boolean2DArray[>0>][>0>]);> > >// 2D char array with 10 rows and 10 columns> >// char array elements are initialized with> >// 'u0000'(null character)> >char>[][] char2DArray =>new> char>[>10>][>10>];> >System.out.println(> >'Default value of char array element: '> >+ char2DArray[>0>][>0>]);> > >// First declaration and then initialization> >int>[][] arr;>// declaration> > >// System.out.println('arr[0][0]: '+ arr[0][0]);> >// The above line will throw an error, as we have> >// only declared the 2D array, but not initialized> >// it.> >arr =>new> int>[>5>][>3>];>// initialization> >System.out.println(>'arr[0][0]: '> + arr[>0>][>0>]);> >}> }> |
>
>
Notă: Când inițializați o matrice 2D, trebuie să specificați întotdeauna prima dimensiune (număr de rânduri), dar furnizarea celei de-a doua dimensiuni (număr de coloane) poate fi omisă.
În fragmentul de cod de mai jos, nu am specificat numărul de coloane. Cu toate acestea, compilatorul Java este suficient de inteligent pentru a manipula dimensiunea prin verificarea numărului de elemente din interiorul coloanelor.
Java
import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// The line below will throw an error, as the first> >// dimension(no. of rows) is not specified> >int>[][] arr =>new> int>[][>3>];> > >// The line below will execute without any error, as> >// the first dimension(no. of rows) is specified> >int>[][] arr =>new> int>[>2>][];> >}> }> |
>
>
Puteți accesa orice element dintr-o matrice 2D folosind numere de rând și numere de coloane.

Abordarea 2:
În fragmentul de cod de mai jos, nu am specificat numărul de rânduri și coloane. Cu toate acestea, compilatorul Java este suficient de inteligent pentru a manipula dimensiunea verificând numărul de elemente din interiorul rândurilor și coloanelor.
Java
conversia unui șir în număr întreg
import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >String[][] subjects = {> >{>'Data Structures & Algorithms'>,> >'Programming & Logic'>,>'Software Engineering'>,> >'Theory of Computation'> },>// row 1> > >{>'Thermodynamics'>,>'Metallurgy'>,> >'Machine Drawing'>,> >'Fluid Mechanics'> },>// row2> > >{>'Signals and Systems'>,>'Digital Electronics'>,> >'Power Electronics'> }>// row3> >};> > >System.out.println(> >'Fundamental Subject in Computer Engineering: '> >+ subjects[>0>][>0>]);> >System.out.println(> >'Fundamental Subject in Mechanical Engineering: '> >+ subjects[>1>][>3>]);> >System.out.println(> >'Fundamental Subject in Electronics Engineering: '> >+ subjects[>2>][>1>]);> >}> }> |
>
>Ieșire
Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics>
Abordarea 3:
Mai mult, putem inițializa fiecare element al matricei separat. Uită-te la fragmentul de cod de mai jos:
Java
import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] scores =>new> int>[>2>][>2>];> >// Initializing array element at position[0][0],> >// i.e. 0th row and 0th column> >scores[>0>][>0>] =>15>;> >// Initializing array element at position[0][1],> >// i.e. 0th row and 1st column> >scores[>0>][>1>] =>23>;> >// Initializing array element at position[1][0],> >// i.e. 1st row and 0th column> >scores[>1>][>0>] =>30>;> >// Initializing array element at position[1][1],> >// i.e. 1st row and 1st column> >scores[>1>][>1>] =>21>;> > >// printing the array elements individually> >System.out.println(>'scores[0][0] = '> >+ scores[>0>][>0>]);> >System.out.println(>'scores[0][1] = '> >+ scores[>0>][>1>]);> >System.out.println(>'scores[1][0] = '> >+ scores[>1>][>0>]);> >System.out.println(>'scores[1][1] = '> >+ scores[>1>][>1>]);> >// printing 2D array using Arrays.deepToString() method> >System.out.println(> >'Printing 2D array using Arrays.deepToString() method: '>);> >System.out.println(Arrays.deepToString(scores));> >}> }> |
>
>Ieșire
scores[0][0] = 15 scores[0][1] = 23 scores[1][0] = 30 scores[1][1] = 21 Printing 2D array using Arrays.deepToString() method: [[15, 23], [30, 21]]>
Abordarea 4
Utilizarea abordării de mai sus pentru inițializarea matricei ar fi o sarcină plictisitoare dacă dimensiunea matricei 2D este prea mare. Modul eficient este de a folosi bucla for pentru inițializarea elementelor matricei în cazul unei matrice 2D mari.
Java
import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int> rows =>80>, columns =>5>;> >int>[][] marks =>new> int>[rows][columns];> > >// initializing the array elements using for loop> >for> (>int> i =>0>; i for (int j = 0; j marks[i][j] = i + j; } } // printing the first three rows of marks array System.out.println('First three rows are: '); for (int i = 0; i <3; i++) { for (int j = 0; j System.out.printf(marks[i][j] + ' '); } System.out.println(); } } }> |
>
>Ieșire
First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6>
Notă: Putem folosi arr. funcția de lungime pentru a găsi dimensiunea rândurilor (prima dimensiune) și funcția arr[0].length pentru a găsi dimensiunea coloanelor (a doua dimensiune).
Abordarea 5: (matrice zimțate)
Poate exista un anumit scenariu în care doriți ca fiecare rând să aibă un număr diferit de coloane. Acest tip de matrice se numește Jagged Array.
Java
import> java.io.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >// declaring a 2D array with 2 rows> >int> jagged[][] =>new> int>[>2>][];> > >// not specifying the 2nd dimension,> >// and making it as jagged array> >// first row has 2 columns> >jagged[>0>] =>new> int>[>2>];> >// second row has 4 columns> >jagged[>1>] =>new> int>[>4>];> >// Initializing the array> >int> count =>0>;> >for> (>int> i =>0>; i // remember to use jagged[i].length instead of // jagged[0].length, since every row has // different number of columns for (int j = 0; j jagged[i][j] = count++; } } // printing the values of 2D Jagged array System.out.println('The values of 2D jagged array'); for (int i = 0; i for (int j = 0; j System.out.printf(jagged[i][j] + ' '); System.out.println(); } } }> |
>
>Ieșire
The values of 2D jagged array 0 1 2 3 4 5>
Program pentru adăugarea a două matrice 2D:
Java
conversie șir în int în java
import> java.io.*;> import> java.util.*;> > class> GFG {> >public> static> void> main(String[] args)> >{> >int>[][] arr1 = { {>1>,>2>,>3> }, {>4>,>5>,>6> } };> >int>[][] arr2 = { {>4>,>5>,>6> }, {>1>,>3>,>2> } };> >int>[][] sum =>new> int>[>2>][>3>];> > >// adding two 2D arrays element-wise> >for> (>int> i =>0>; i for (int j = 0; j 0].length; j++) { sum[i][j] = arr1[i][j] + arr2[i][j]; } } System.out.println('Resultant 2D array: '); for (int i = 0; i System.out.println(Arrays.toString(sum[i])); } } }> |
>
>Ieșire
Resultant 2D array: [5, 7, 9] [5, 8, 8]>