Les tableaux multidimensionnels sont des structures complexes possédant plusieurs indices.

Les dimensions dans ces tableaux sont en fait des références vers de simples tableaux. Un tableau à trois dimensions contiendra un premier tableau référençant plusieurs autres tableaux, référençant eux mêmes encore d'autres tableaux qui contiennent des valeurs.

La création de tels tableaux s'effectue en posant autant de crochets qu'il est nécessaire, à la suite de son type ou de son identificateur.

type[][]... identificateur;

type identificateur[][]...;

// Déclaration correcte mais peu claire
type[][] identificateur[];

double[][] remuneration;
// Définition d'un tableau à deux dimensions

double[][][] remuneration;
// Définition d'un tableau à trois dimensions

La définition des tailles d'un tableau multidimensionnel utilise, à l'instar des tableaux simples, l'opérateur new.

identificateur = new type[taille_1][taille_2];

remuneration = new double[20][12];
// Tableau de 20 tableaux de 12 éléments primitifs

remuneration = new double[3][20][12];
// Tableau référençant 3 tableaux de 
// 20 autres de 12 éléments primitifs

Les tableaux multidimensionnels acceptent les variations dans leur dimension. Le tableau remuneration à trois dimensions représentant respectivement les succursales, les employés et le nombre de mois, pourraient ne pas avoir le même nombre d'employés par succursale, si bien qu'il faudrait modifier la définition du tableau pour que cela soit pris en compte.

remuneration = new double[3][][];

remuneration[0] = new double[20][12];
remuneration[0] = new double[15][12];
remuneration[0] = new double[11][12];

L'initialisation de ce genre de tableau nécessite l'utilisation d'accolades imbriquées.

identificateur[][] = {{Valeur, ..., ValeurN}, 
                             ...,
                             {Valeur, ..., ValeurN}};
...
Identificateur[][][] = {{{Valeur, ...}, ..., {Valeur, ...}},
                                ...,
                                {{Valeur, ...}, ..., {Valeur, ...}}};

remuneration[][] = {{1351.02, 1410.85, ..., 1519.36},
                           ...,
                           {2085, 1810.85, ..., 2519.36}};
// Initialisation de 12 valeurs dans
// chaque ligne d'un tableau bidimensionnel.

Dans un tableau bidimensionnel, la variation du second indice avec une valeur fixe pour le premier, permet d'accéder aux valeurs présentes dans une ligne, l'inverse permettant l'accès aux valeurs dans une colonne.

valeur_ligne = identificateur[i_fixe][j_variable];

valeur_colonne = identificateur[i_variable][j_fixe];

for(j = 0; j < 12; j++)
  paie_1 += remuneration[0][j];
// total sur une ligne

for(i = 0; i < 20; i++)
  paie_total_fev += remuneration[i][0];
// total sur une colonne

La taille d'une dimension d'un tableau peut être récupérée par la propriété length.

int taille_i = identificateur.length;

int taille_j = identificateur[i].length;

int taille_k = identificateur[i][j].length;
...

int taille = identificateur[0].length;
// taille = 12

Le parcours automatique de tous les éléments d'un tableau multidimensionnel, nécessite l'emploi de plusieurs boucles imbriquées.

class BoucleFor {
  static double[][] remuneration = {{1351.02, 1410.85, 1519.36},
                                    {1501.21, 1610.62, 1908.78, 1930.84},
                                    {2085.01, 1810.85, 2519.36}};
  static double total = 0.0d;
  public static void main(String[] args){
    for(int i = 0; i < remuneration.length; i++) {
      for(int j = 0; j < remuneration[i].length; j++) {
        total += remuneration[i][j];
        System.out.println(i + " et " + j + " : " 
                           + remuneration[i][j] + "n");
      }
    }
    System.out.println("        --------n");
    System.out.println("total  : " + total);
  }
}