Una matriu multidimensional. Les matrius multidimensionals més utilitzades són les matrius 2-D i 3-D. Podem dir que qualsevol matriu de dimensions superiors és bàsicament una matriu de matrius. Un exemple molt comú d'una matriu 2D és el tauler d'escacs. Un tauler d'escacs és una graella que conté 64 caixes quadrades 1×1. De la mateixa manera, podeu visualitzar una matriu 2D. En una matriu 2D, cada element està associat amb un número de fila i un número de columna. L'accés a qualsevol element de la matriu 2D és similar a l'accés al registre d'un fitxer Excel utilitzant tant el número de fila com el de columna. Les matrius 2D són útils per implementar un joc de Tic-Tac-Toe, escacs o fins i tot emmagatzemar els píxels de la imatge.

Declaració de matriu 2-D a Java:
Qualsevol matriu bidimensional es pot declarar de la següent manera:
Sintaxi:
data_type array_name[][]; (O) data_type[][] nom_matriu;
- data_type: ja que Java és un llenguatge de tipus estàtica (és a dir, espera que les seves variables es declarin abans que se'ls pugui assignar valors). Per tant, especificant el tipus de dades es decideix el tipus d'elements que acceptarà. per exemple. per emmagatzemar només valors enters, el tipus de dades es declararà com int. nom_matriu: és el nom que es dóna a la matriu 2-D. per exemple. assignatures, estudiants, fruites, departament, etc.
Nota: Podem escriure [ ][ ] després de data_type o podem escriure [ ][ ] després de array_name mentre declarem la matriu 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> >}> }> |
>
>
Diferents enfocaments per a la inicialització de matrius 2-D a Java:
data_type[][] array_Name = nou tipus_dada[no_of_files][no_of_columns];
El total d'elements de qualsevol matriu 2D serà igual a (no_of_files) * (no_of_columns).
- no_of_rows: el nombre de files d'una matriu. per exemple. no_of_rows = 3, llavors la matriu tindrà tres files. no_of_columns: el nombre de columnes d'una matriu. per exemple. no_of_columns = 4, llavors la matriu tindrà quatre columnes.
La sintaxi anterior d'inicialització de la matriu assignarà valors per defecte a tots els elements de la matriu segons el tipus de dades especificat.
A continuació es mostra la implementació de diversos enfocaments per inicialitzar matrius 2D:
Enfocament 1:
Java
// 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>]);> >}> }> |
>
>
Nota: Quan inicialitzeu una matriu 2D, sempre heu d'especificar la primera dimensió (nombre de files), però es pot ometre proporcionar la segona dimensió (nombre de columnes).
Al fragment de codi següent, no hem especificat el nombre de columnes. Tanmateix, el compilador Java és prou intel·ligent com per manipular la mida comprovant el nombre d'elements dins de les columnes.
Java
s en python
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>][];> >}> }> |
>
>
Podeu accedir a qualsevol element d'una matriu 2D mitjançant números de fila i números de columna.

Enfocament 2:
Al fragment de codi següent, no hem especificat el nombre de files i columnes. Tanmateix, el compilador Java és prou intel·ligent com per manipular la mida comprovant el nombre d'elements dins de les files i columnes.
Java
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>]);> >}> }> |
>
>Sortida
Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics>
Enfocament 3:
A més, podem inicialitzar cada element de la matriu per separat. Mireu el fragment de codi següent:
Java
1nf 2nf 3nf
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));> >}> }> |
>
>Sortida
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]]>
Enfocament 4
Utilitzar l'enfocament anterior per a la inicialització de matrius seria una tasca tediosa si la mida de la matriu 2D és massa gran. La manera eficient és utilitzar el bucle for per inicialitzar els elements de la matriu en el cas d'una matriu 2D gran.
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(); } } }> |
>
>Sortida
First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6>
Nota: Podem utilitzar arr. funció de longitud per trobar la mida de les files (1a dimensió) i la funció arr[0].length per trobar la mida de les columnes (2a dimensió).
Enfocament 5: (matrius irregulars)
Pot haver-hi un escenari determinat en què voleu que cada fila tingui un nombre diferent de columnes. Aquest tipus de matriu s'anomena 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(); } } }> |
>
>Sortida
The values of 2D jagged array 0 1 2 3 4 5>
Programa per afegir dues matrius 2D:
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])); } } }> |
>
>Sortida
Resultant 2D array: [5, 7, 9] [5, 8, 8]>