Pregunta ¿Cómo declaro e inicializo una matriz en Java?


¿Cómo declaro e inicializo una matriz en Java?


1613
2017-07-29 14:22


origen


Respuestas:


Puede usar declaración de matriz o literal de matriz (pero solo cuando declara y afecta la variable de inmediato, los literales de matriz no se pueden usar para reasignar una matriz).

Para tipos primitivos:

int[] myIntArray = new int[3];
int[] myIntArray = {1,2,3};
int[] myIntArray = new int[]{1,2,3};

Para clases, por ejemplo String, es lo mismo:

String[] myStringArray = new String[3];
String[] myStringArray = {"a","b","c"};
String[] myStringArray = new String[]{"a","b","c"};

La tercera forma de inicialización es útil cuando declaras primero la matriz y luego la inicializas. El elenco es necesario aquí.

String[] myStringArray;
myStringArray = new String[]{"a","b","c"};

2188
2017-07-09 21:59



Hay dos tipos de matriz.
 

Matriz unidimensional

Sintaxis para los valores predeterminados:

int[] num = new int[5];

O (menos preferido)

int num[] = new int[5];

Sintaxis con valores dados (inicialización variable / campo):

int[] num = {1,2,3,4,5};

O (menos preferido)

int num[] = {1, 2, 3, 4, 5};

Nota: Por conveniencia int [] num es preferible porque claramente dice que está hablando aquí acerca de la matriz. De lo contrario, no hay diferencia. De ningún modo.

Matriz multidimensional

Declaración

int[][] num = new int[5][2];

O

int num[][] = new int[5][2];

O

int[] num[] = new int[5][2];

Inicialización

 num[0][0]=1;
 num[0][1]=2;
 num[1][0]=1;
 num[1][1]=2;
 num[2][0]=1;
 num[2][1]=2;
 num[3][0]=1;
 num[3][1]=2;
 num[4][0]=1;
 num[4][1]=2;

O

 int[][] num={ {1,2}, {1,2}, {1,2}, {1,2}, {1,2} };

Ragged Array (o matriz no rectangular)

 int[][] num = new int[5][];
 num[0] = new int[1];
 num[1] = new int[5];
 num[2] = new int[2];
 num[3] = new int[3];

Entonces aquí estamos definiendo columnas explícitamente.
De otra manera: 

int[][] num={ {1}, {1,2}, {1,2,3,4,5}, {1,2}, {1,2,3} };

Para acceder:

for (int i=0; i<(num.length); i++ ) {
    for (int j=0;j<num[i].length;j++)
        System.out.println(num[i][j]);
}

Alternativamente:

for (int[] a : num) {
  for (int i : a) {
    System.out.println(i);
  }
}

Las matrices irregulares son matrices multidimensionales.
Para una explicación, ver detalles de la matriz multidimensional en los tutoriales oficiales de Java


220
2017-07-29 14:29



Type[] variableName = new Type[capacity];

Type[] variableName = {comma-delimited values};



Type variableName[] = new Type[capacity]; 

Type variableName[] = {comma-delimited values};

también es válido, pero prefiero los corchetes después del tipo, porque es más fácil ver que el tipo de la variable es realmente una matriz.


116
2017-07-29 14:28



Hay varias formas en que puede declarar una matriz en Java:

float floatArray[]; // Initialize later
int[] integerArray = new int[10];
String[] array = new String[] {"a", "b"};

Puede encontrar más información en Sun tutorial sitio y el JavaDoc.


32
2017-07-29 14:29



Me parece útil si entiendes cada parte:

Type[] name = new Type[5];

Type[] es el tipo del variable llamado nombre ("nombre" se llama identificador) El "Tipo" literal es el tipo base, y los corchetes significan que este es el tipo de matriz de esa base. Los tipos de matriz son, a su vez, tipos propios, lo que te permite crear matrices multidimensionales como Type[][] (el tipo de matriz de Tipo []). La palabra clave new dice que asigne memoria para la nueva matriz. El número entre el corchete indica qué tan grande será la nueva matriz y cuánta memoria asignar. Por ejemplo, si Java sabe que el tipo de base Type toma 32 bytes, y desea una matriz de tamaño 5, necesita asignar internamente 32 * 5 = 160 bytes.

También puede crear matrices con los valores que ya existen, como

int[] name = {1, 2, 3, 4, 5};

que no solo crea el espacio vacío sino que lo llena con esos valores. Java puede decir que las primitivas son números enteros y que hay 5, por lo que el tamaño de la matriz se puede determinar implícitamente.


26
2018-06-04 06:02



A continuación, se muestra la declaración de una matriz, pero la matriz no se inicializa:

 int[] myIntArray = new int[3];

A continuación se muestra la declaración, así como la inicialización de la matriz:

int[] myIntArray = {1,2,3};

Ahora, lo siguiente también muestra la declaración, así como la inicialización de la matriz:

int[] myIntArray = new int[]{1,2,3};

Pero este tercero muestra la propiedad de la creación anónima de objetos de matriz apuntada por una variable de referencia "myIntArray", por lo que si escribimos solo "new int [] {1,2,3};" entonces así es como se puede crear el objeto de matriz anónimo.

Si solo escribimos:

int[] myIntArray;

esto no es una declaración de matriz, pero la siguiente declaración completa la declaración anterior:

myIntArray=new int[3];

26
2017-07-29 14:25



Alternativamente,

// Either method works
String arrayName[] = new String[10];
String[] arrayName = new String[10];

Eso declara una matriz llamada arrayName del tamaño 10 (tiene los elementos del 0 al 9 para usar).


22
2017-07-29 15:56



Además, en caso de que quieras algo más dinámico, está la interfaz de la Lista. Esto no funcionará tan bien, pero es más flexible:

List<String> listOfString = new ArrayList<String>();

listOfString.add("foo");
listOfString.add("bar");

String value = listOfString.get(0);
assertEquals( value, "foo" );

22
2018-01-28 19:19