Vícerozměrné pole. Nejčastěji používaná vícerozměrná pole jsou 2-D a 3-D pole. Můžeme říci, že jakékoli vyšší dimenzionální pole je v podstatě polem polí. Velmi častým příkladem 2D pole je šachovnice. Šachovnice je mřížka obsahující 64 čtvercových políček 1×1. Podobně si můžete vizualizovat 2D pole. Ve 2D poli je každému prvku přiřazeno číslo řádku a číslo sloupce. Přístup k jakémukoli prvku 2D pole je podobný přístupu k záznamu souboru Excel pomocí čísla řádku i čísla sloupce. 2D pole jsou užitečná při implementaci hry Tic-Tac-Toe, šachů nebo dokonce ukládání obrazových pixelů.

Deklarace 2-D pole v Javě:
Jakékoli 2-rozměrné pole lze deklarovat následovně:
Syntax:
datový_typ název_pole[][]; (NEBO) datový_typ[][] název_pole;
- data_type: Protože Java je staticky typovaný jazyk (tj. očekává, že jeho proměnné budou deklarovány předtím, než jim budou moci být přiřazeny hodnoty). Zadání datového typu tedy rozhodne o typu prvků, které bude přijímat. např. pro uložení pouze celočíselných hodnot bude datový typ deklarován jako int. pole_name: Je to název, který je přidělen 2-D poli. např. předměty, studenti, ovoce, oddělení atd.
Poznámka: Můžeme napsat [ ][ ] za typ_dat nebo můžeme napsat [ ][ ] za název_pole při deklaraci 2D pole.
Jáva
// 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> >}> }> |
>
>
Různé přístupy k inicializaci 2-D pole v Javě:
datový_typ[][] název_pole = Nový data_type[no_of_rows][no_of_columns];
Celkový počet prvků v jakémkoli 2D poli bude roven (no_of_rows) * (no_of_columns).
- no_of_rows: Počet řádků v poli. např. no_of_rows = 3, pole bude mít tři řádky. no_of_columns: Počet sloupců v poli. např. no_of_columns = 4, pole bude mít čtyři sloupce.
Výše uvedená syntaxe inicializace pole přiřadí výchozí hodnoty všem prvkům pole podle zadaného datového typu.
Níže je uvedena implementace různých přístupů pro inicializaci 2D polí:
Přístup 1:
Jáva
// 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>]);> >}> }> |
>
>
Poznámka: Když inicializujete 2D pole, musíte vždy zadat první rozměr (počet řádků), ale poskytnutí druhého rozměru (počet sloupců) může být vynecháno.
Ve fragmentu kódu níže jsme neuvedli počet sloupců. Kompilátor Java je však dostatečně chytrý, aby manipuloval s velikostí kontrolou počtu prvků uvnitř sloupců.
Jáva
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>][];> >}> }> |
>
>
K jakémukoli prvku 2D pole můžete přistupovat pomocí čísel řádků a čísel sloupců.

Přístup 2:
Ve fragmentu kódu níže jsme neuvedli počet řádků a sloupců. Kompilátor Java je však dostatečně chytrý, aby manipuloval s velikostí kontrolou počtu prvků uvnitř řádků a sloupců.
Jáva
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>]);> >}> }> |
>
>Výstup
Fundamental Subject in Computer Engineering: Data Structures & Algorithms Fundamental Subject in Mechanical Engineering: Fluid Mechanics Fundamental Subject in Electronics Engineering: Digital Electronics>
Přístup 3:
Navíc můžeme inicializovat každý prvek pole samostatně. Podívejte se na fragment kódu níže:
Jáva
java seznam do pole
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));> >}> }> |
>
>Výstup
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]]>
Přístup 4
Použití výše uvedeného přístupu pro inicializaci pole by bylo zdlouhavým úkolem, pokud je velikost 2D pole příliš velká. Efektivním způsobem je použít pro inicializaci prvků pole v případě velkého 2D pole smyčku for.
Jáva
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(); } } }> |
>
>Výstup
First three rows are: 0 1 2 3 4 1 2 3 4 5 2 3 4 5 6>
Poznámka: Můžeme použít arr. funkce length pro zjištění velikosti řádků (1. rozměr) a funkce arr[0].length pro zjištění velikosti sloupců (2. rozměr).
Přístup 5: (zubatá pole)
Může existovat určitý scénář, kdy chcete, aby každý řádek měl jiný počet sloupců. Tento typ pole se nazývá Jagged Array .
Jáva
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(); } } }> |
>
>Výstup
The values of 2D jagged array 0 1 2 3 4 5>
Program pro přidání dvou 2D polí:
Jáva
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])); } } }> |
>
>Výstup
Resultant 2D array: [5, 7, 9] [5, 8, 8]>