Daugiamatis masyvas. Dažniausiai naudojami daugiamačiai masyvai yra 2-D ir 3-D matricos. Galime pasakyti, kad bet koks aukštesnių matmenų masyvas iš esmės yra masyvų masyvas. Labai dažnas 2D masyvo pavyzdys yra šachmatų lenta. Šachmatų lenta yra tinklelis, kuriame yra 64 1 × 1 kvadratiniai langeliai. Panašiai galite vizualizuoti 2D masyvą. 2D masyve kiekvienas elementas yra susietas su eilutės ir stulpelio numeriu. Prieiga prie bet kurio 2D masyvo elemento yra panaši į prieigą prie „Excel“ failo įrašo naudojant eilutės ir stulpelio numerį. 2D matricos yra naudingos įgyvendinant žaidimą „Tic-Tac-Toe“, šachmatais ar net išsaugant vaizdo pikselius.

2-D masyvo deklaravimas Java:
Bet koks dvimatis masyvas gali būti deklaruojamas taip:
dvejetainio paieškos medžio pavyzdys
Sintaksė:
duomenų_tipas masyvo_pavadinimas[][]; (ARBA) duomenų_tipas[][] masyvo_pavadinimas;
- data_type: kadangi „Java“ yra statinio tipo kalba (t. y. ji tikisi, kad jos kintamieji bus deklaruoti prieš jiems priskiriant reikšmes). Taigi, nurodant duomenų tipą, nustatoma, kokio tipo elementai bus priimti. pvz. jei norite saugoti tik sveikųjų skaičių reikšmes, duomenų tipas bus deklaruojamas kaip int. masyvo_pavadinimas: tai pavadinimas, kuris suteikiamas 2-D masyvei. pvz. dalykai, studentai, vaisiai, skyrius ir kt.
Pastaba: Deklaruodami 2D masyvą galime parašyti [ ][ ] po duomenų_tipas arba [ ][ ] po masyvo_pavadinimas.
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> >}> }> |
>
>
Skirtingi „Java“ 2-D masyvo inicijavimo būdai:
duomenų_tipas[][] masyvo_pavadinimas = naujas duomenų_tipas[eilučių_nr.][stulpelių_nr.];
Bendras bet kurio 2D masyvo elementų skaičius bus lygus (eilių__nr) * (stulpelių_nr.).
- no_of_rows: masyvo eilučių skaičius. pvz. no_of_rows = 3, tada masyvas turės tris eilutes. no_of_columns: masyvo stulpelių skaičius. pvz. no_of_columns = 4, tada masyvas turės keturis stulpelius.
Aukščiau pateikta masyvo inicijavimo sintaksė priskirs numatytąsias reikšmes visiems masyvo elementams pagal nurodytą duomenų tipą.
Toliau pateikiami įvairūs 2D matricų inicijavimo būdai:
1 metodas:
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>]);> >}> }> |
>
>
Pastaba: Kai inicijuojate 2D masyvą, visada turite nurodyti pirmąjį matmenį (eilučių skaičių), tačiau antrojo matmens (stulpelių skaičius) galite praleisti.
Toliau pateiktame kodo fragmente nenurodėme stulpelių skaičiaus. Tačiau „Java“ kompiliatorius yra pakankamai protingas, kad galėtų manipuliuoti dydžiu, tikrindamas elementų skaičių stulpeliuose.
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>][];> >}> }> |
>
>
Galite pasiekti bet kurį 2D masyvo elementą naudodami eilučių ir stulpelių numerius.

2 metodas:
Toliau pateiktame kodo fragmente nenurodėme eilučių ir stulpelių skaičiaus. Tačiau „Java“ kompiliatorius yra pakankamai protingas, kad galėtų manipuliuoti dydžiu, tikrindamas elementų skaičių eilutėse ir stulpeliuose.
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>]);> >}> }> |
>
>Išvestis
Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics>
3 metodas:
Be to, kiekvieną masyvo elementą galime inicijuoti atskirai. Peržiūrėkite toliau pateiktą kodo fragmentą:
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));> >}> }> |
>
>Išvestis
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]]>
4 metodas
Aukščiau pateikto metodo naudojimas masyvo inicijavimui būtų varginanti užduotis, jei 2D masyvo dydis yra per didelis. Veiksmingas būdas yra naudoti for loop masyvo elementų inicijavimui, kai yra didelis 2D masyvas.
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(); } } }> |
>
>Išvestis
First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6>
Pastaba: Galime naudoti arr. ilgio funkcija, skirta eilučių dydžiui rasti (1-asis matmuo), o funkcija arr[0].length – stulpelių dydžiui rasti (2-asis matmuo).
5 metodas: (nelygūs masyvai)
Gali būti tam tikras scenarijus, kai norite, kad kiekvienoje eilutėje būtų skirtingas stulpelių skaičius. Šio tipo masyvas vadinamas 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(); } } }> |
>
>Išvestis
The values of 2D jagged array 0 1 2 3 4 5>
Programa, skirta pridėti du 2D matricas:
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])); } } }> |
>
>Išvestis
Resultant 2D array: [5, 7, 9] [5, 8, 8]>