2010-06-03 5 views
13

Je ne parviens pas à comprendre le code multidimensionnel suivant. Quelqu'un pourrait-il me clarifier?Confusion dans un tableau multidimensionnel en Java

int[][] myJaggedArr = new int [][] 
{ 
       new int[] {1,3,5,7,9}, 
       new int[] {0,2,4,6}, 
       new int[] {11,22} 
    }; 

Puis-je savoir en quoi il diffère du code suivant?

int[][] myArr = new int [][] { 
      {1,3,5,7,9}, 
       {0,2,4,6}, 
       {11,22} }; 

Répondre

7

Ce n'est pas différent du tout. La première rend juste plus explicite que vous créez un tableau de tableaux.

3

Pas de réelle différence. Juste le premier est déclarant sous les tableaux tandis que le second est juste de placer des valeurs qui sont des tableaux dans le tableau

2

Les deux morceaux de code produisent des résultats identiques.

Les matrices multidimensionnelles sont des matrices de matrices.

  • myArr[0][1] renverrait 3
  • myArr[1][1] retourneraient 2
  • myArr[2][0] retourneraient 11
0

complètement le même - si vous remplacez l'un avec l'autre et compilez, vous obtiendrez octet pour -byte identiques fichiers class. Essayez-le vous-même!

0

Ces deux fragments de code aboutiront à des tableaux multidimensionnels avec des valeurs équivalentes.

Le deuxième extrait montre que l'utilisation explicite de new n'est pas nécessaire lors de l'utilisation du raccourci littéral de tableau pour les tableaux internes. Ceci est également vrai pour le tableau externe. Ce code pourrait encore être simplifiée:

int[][] myArr = { {1,3,5,7,9}, {0,2,4,6}, {11,22} }; 

Le Oracle Java Tutorial ne montre pas des exemples de l'utilisation de mélange new de déclarer un tableau avec la déclaration de tableau littéral.

0

À partir du début de la déclaration des tableaux de la manière ci-dessus.

Vous pouvez créer un tableau en indiquant:

int [] arr = new int[3]; //(eq 1)

Vous pouvez aller plus loin en déclarant les valeurs dans le tableau avec:

int [] arr = {0,1,2}; //(eq 2)

Si vous connaissez vos valeurs À l'avance, vous n'avez pas besoin de créer une instance de int [].

Maintenant à votre question. Il n'y a pas de différence entre les deux, comme d'autres l'ont indiqué, à l'exception d'une image plus claire de ce que vous faites. L'équivalent de l'éq. 2 dans un tableau à deux dimensions est:

int [][] arr = {{0,1,2},{3,4,5},{6,7,8}}; //(eq 3)

Remarquez que vous n'avez pas besoin de déclarer « new int [] [] » avant de commencer à entrer dans les valeurs."{0,1,2}" est un tableau lui-même et tout le reste dans le premier "{" et le dernier} "de l'équation 3. En fait, après avoir déclaré arr, vous pouvez appeler le tableau" {0,1 , 2} "de l'équation 3 par la déclaration suivante:

arr[0]; //(eq 4)

eq 4 est équivalent à l'équation 2. Vous pouvez changer le simple "{" avec "new int [] {" ou" new int [] [] {".Si vous voulez changer l'un pour l'autre, c'est bien et la seule vraie différence est la météo ou pas, elle correspond à votre style de codage

Pour le plaisir, voici un exemple de Tableau tridimensionnel en syntaxe courte:

// Ceci est une déclaration très long et je ne recommande pas d'utiliser cette façon

int [][][] arr = {{{0,1,2},{3,4,5},{6,7,8}}, {{9,10,11},{12,13,14},{15,16,17}}, {{18,19,20},{21,22,23},{24,25,26}}};

Questions connexes