Jedná se vlastně o pole polí a pracuje se s nimi jako s jednorozměrnými poli. Rozdíl je při deklaraci, kde je třeba uvést všechny rozměry. Řádky ovšem nemusí mít nutně stejnou délku sloupce.
... int [][] dvouRozmernePole = new int [5][4]; ...Přístup k jednotlivým prvkům pole je opět stejný, přes indexy řádků a sloupců.
... int hodnotaPrvkuPole; ... hodnotaPrvkuPole = dvouRozmernePole[indexRadku] [indexSloupcu]; ...I dvourozměrné pole lze vytvořit statické inicializace.
... int [][] dvouRozmernePoleStatickyInicializovane = {{1,2,3},{11,12},{21,22,23,24}}; ...Pokud potřebujeme v programu vícerozměrné pole (3, 4, 5, ….) postupuje se analogicky. Pokud je takové pole vytvářeno po částech nelze přeskakovat rozměry.
... int [][][] triRozmernePoleStatickyInicializovane = {{{ 1, 2, 3},{11,12,13},{21,22,23}}, {{31,32,33},{41,42,43},{51,52,53}}}; ...