Apuntes Lenguaje Java

9. Arrays

9.1. Declaración y acceso
9.2. Arrays multidimensionales

9.1. Declaración y acceso

Un array es una colección ordenada de elementos del mismo tipo, que son accesibles a través de un índice.

Un array puede contener datos primitivos o referencias a objetos.

Los arrays se declaran:

[modificadores]    tipo_variable [ ] nombre;

Por ejemplo:

int [ ] a;
Punto [ ] p;

La declaración dice que a es un array de enteros y p un array de objetos de tipo Punto. Más exactamente a es una referencia a una colección de enteros, aunque todavía no se sabe cuantos elementos tiene el array. p es una referencia a una colección de referencias que apuntarán  objetos Punto.

Un array se crea como si se tratara de un objeto (de hecho las variables de tipo array son referencias):

a = new int [5];
p = new Punto[3];

En el momento de la creación del array se dimensiona el mismo y se reserva la memoria necesaria.

También puede crearse de forma explícita asignando valores a todos los elementos del array en el momento de la declaración, de la siguiente forma:

int [ ] a = { 5 , 3 , 2 };

El acceso a los elementos del array se realiza indicando entre corchetes el elemento del array que se desea, teniendo en cuenta que siempre el primer elemento del array es el índice 0. Por ejemplo a[1]. En este ejemplo los índices del array de tres elementos son 0, 1 y 2. Si se intenta usar un índice que está fuera del rango válido para ese array se produce un error (en realidad una excepción. Las excepciones se tratan en un capítulo posterior) de 'Indice fuera de rango'. En el ejemplo anterior se produce esta excepción si el índice es menor que 0 o mayor que 2. 

Se puede conocer el número de elementos de un array usando la variable length. En el ejemplo a.length contiene el valor 3.

Un array, como cualquier otra referencia puede formar parte de la lista de parámetros o constituir el valor de retorno de un método. En ambos casos se indica que se trata de un array con los corchetes que siguen al tipo. Por ejemplo:

String [ ] metodoConArrays ( Punto [ ] ) { . . }

El método metodoConArrays recibe como parámetro un array de Puntos y devuelve un array de Strings. El método podría invocarse de la siguiente forma:

Punto p [ ] = new Punto [3];
. . .
String [ ] resultado = metodoConArrays(p);

9.2. Arrays multidimensionales

Es posible declarar arrays de más de una dimensión. Los conceptos son los mismos que para los arrays monodimensionales.

Por ejemplo:

int [ ][ ] a = { { 1 , 2 } , { 3 , 4 } , { 5 , 6 } };
int x = a[1][0];  // contiene 3
int y = a[2][1];  // contiene 6

Se pueden recorrer los elementos de un array multidimensional, de la siguiente forma:

int [ ][ ] a = new int [3][2];
for ( int i = 0 ; i < a.length ; i++ ) 
    for ( int j = 0 ; j < a[i].length ; j++)
        a[i][j] = i * j;

Obsérvese en el ejemplo la forma de acceder al tamaño de cada dimensión del array.

Antonio Bel Puchol - antonio@abelp.net