2010-06-03 11 views
13

No puedo entender el siguiente código multidimensional. ¿Podría alguien aclararme?Confusión en matriz multidimensional en Java

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

¿Cómo puedo saber cómo es el del código siguiente?

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

Respuesta

7

No es para nada diferente. El primero solo hace que sea más explícito que estás creando una matriz de matrices.

3

No hay diferencia real. Solo el primero es declarando las matrices secundarias mientras que el segundo solo está colocando valores que son matrices en la matriz

2

Las dos piezas de código producen resultados idénticos.

Las matrices multidimensionales son matrices de matrices.

  • myArr[0][1] volvería 3
  • myArr[1][1] volverían 2
  • myArr[2][0] regresarían 11
0

completamente el mismo - si se reemplaza uno con el otro y compilar, obtendrá byte por -byte archivos idénticos class. ¡Inténtalo tú mismo!

0

Ambos fragmentos de código darán como resultado matrices multidimensionales con valores equivalentes.

El segundo fragmento muestra que el uso explícito de new no es necesario cuando se utiliza el acceso directo de matriz para las matrices internas. Esto también es cierto para la matriz externa. Este código adicional podría simplificarse a:

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

El Oracle Java Tutorial no muestra ningún ejemplo de mezclar el uso de new para declarar una matriz con la declaración de matriz literal.

0

Comenzando con el comienzo de la declaración de matrices de la manera anterior.

Puede crear una matriz declarando:

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

Usted puede ir un paso más allá al declarar los valores de la matriz con:

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

Si conoce sus valores antes de tiempo, no tiene que crear una instancia de int [].

Ahora a su pregunta. No hay diferencia entre los dos, como han dicho otros, a excepción de una imagen más clara de lo que está haciendo. El equivalente de eq. 2 en una matriz de dos dimensiones es:

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

Note como que no es necesario declarar "new int [] []" antes de comenzar a introducir en los valores."{0,1,2}" es una matriz en sí y lo es todo lo demás dentro del primer "{" y último} "en la ecuación 3. De hecho, después de declarar arr, puede llamar a la matriz" {0,1 , 2} "de la ecuación 3 por la siguiente declaración:

arr[0]; //(eq 4)

eq 4 es equivalente a la ecuación 2. se puede cambiar el sencillo "{" con "new int [] {" o" new int [] [] {". Si quiere cambiar uno por otro, está bien y la única diferencia real es el clima o no, se ajusta a su estilo de codificación.

Por diversión, he aquí un ejemplo de Matriz tridimensional en sintaxis breve:

// Esta es una declaración muy largo y yo no recomiendan el uso de esta forma

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}}};

Cuestiones relacionadas