Una matriz multidimensional. Los arreglos multidimensionales más utilizados son los arreglos 2D y 3D. Podemos decir que cualquier matriz de dimensiones superiores es básicamente una matriz de matrices. Un ejemplo muy común de matriz 2D es el tablero de ajedrez. Un tablero de ajedrez es una cuadrícula que contiene 64 casillas cuadradas de 1×1. De manera similar, puede visualizar una matriz 2D. En una matriz 2D, cada elemento está asociado con un número de fila y un número de columna. Acceder a cualquier elemento de la matriz 2D es similar a acceder al registro de un archivo de Excel utilizando tanto el número de fila como el número de columna. Las matrices 2D son útiles al implementar un juego de tres en raya, ajedrez o incluso almacenar los píxeles de la imagen.

Declarando una matriz 2-D en Java:
Cualquier matriz bidimensional se puede declarar de la siguiente manera:
Sintaxis:
tipo_datos nombre_matriz[][]; (O) tipo_datos[][] nombre_matriz;
- tipo_datos: dado que Java es un lenguaje de tipo estático (es decir, espera que sus variables se declaren antes de que se les puedan asignar valores). Entonces, especificar el tipo de datos decide el tipo de elementos que aceptará. p.ej. para almacenar solo valores enteros, el tipo de datos se declarará como int. array_name: Es el nombre que se le da al array 2-D. p.ej. materias, estudiantes, frutas, departamento, etc.
Nota: Podemos escribir [ ][ ] después de tipo_datos o podemos escribir [ ][ ] después de nombre_matriz mientras declaramos la matriz 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> >}> }> |
>
>
Diferentes enfoques para la inicialización de matrices 2-D en Java:
tipo_datos[][] nombre_matriz = nuevo tipo_datos[nº_de_filas][nº_de_columnas];
El total de elementos en cualquier matriz 2D será igual a (no_of_rows) * (no_of_columns).
- no_of_rows: el número de filas de una matriz. p.ej. no_of_rows = 3, entonces la matriz tendrá tres filas. no_of_columns: el número de columnas de una matriz. p.ej. no_of_columns = 4, entonces la matriz tendrá cuatro columnas.
La sintaxis anterior de inicialización de matrices asignará valores predeterminados a todos los elementos de la matriz según el tipo de datos especificado.
A continuación se muestra la implementación de varios enfoques para inicializar matrices 2D:
Enfoque 1:
Java
árbol binario vs bst
// 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: Cuando inicializa una matriz 2D, siempre debe especificar la primera dimensión (número de filas), pero se puede omitir la segunda dimensión (número de columnas).
En el fragmento de código siguiente, no hemos especificado el número de columnas. Sin embargo, el compilador de Java es lo suficientemente inteligente como para manipular el tamaño verificando la cantidad de elementos dentro de las columnas.
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>][];> >}> }> |
>
>
Puede acceder a cualquier elemento de una matriz 2D utilizando números de fila y números de columna.

Enfoque 2:
En el fragmento de código siguiente, no hemos especificado el número de filas y columnas. Sin embargo, el compilador de Java es lo suficientemente inteligente como para manipular el tamaño verificando la cantidad de elementos dentro de las filas y columnas.
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>]);> >}> }> |
>
>Producción
Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics>
Enfoque 3:
Además, podemos inicializar cada elemento de la matriz por separado. Mire el fragmento de código a continuación:
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));> >}> }> |
>
>Producción
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]]>
Enfoque 4
Usar el enfoque anterior para la inicialización de la matriz sería una tarea tediosa si el tamaño de la matriz 2D es demasiado grande. La forma eficaz es utilizar el bucle for para inicializar los elementos de la matriz en el caso de una matriz 2D grande.
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(); } } }> |
>
>Producción
First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6>
Nota: Podemos usar arr. función length para encontrar el tamaño de las filas (primera dimensión) y función arr[0].length para encontrar el tamaño de las columnas (segunda dimensión).
Método 5: (matrices irregulares)
Puede haber un escenario determinado en el que desee que cada fila tenga un número diferente de columnas. Este tipo de matriz se llama 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(); } } }> |
>
>Producción
The values of 2D jagged array 0 1 2 3 4 5>
Programa para agregar dos matrices 2D:
Java
constante 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])); } } }> |
>
>Producción
Resultant 2D array: [5, 7, 9] [5, 8, 8]>