Arrays en Java

Home >> Programación >> Java


¿Tienes que trabajar con muchos datos del mismo tipo y tienes que aplicar las mismas operaciones sobre ellos? ¡Los arrays en Java son la solución!

Esto es todo lo que vas a encontrar en este artículo:

¿Qué son los arrays en Java?

Un array es una estructura de tamaño fijo que permite almacenar datos del mismo tipo de forma consecutiva en memoria.

Buf, muy complicado 😵‍💫.

No hay problema. Te lo voy a explicar con un ejemplo que lo vas a entender muchísimo mejor.

Imagina que tienes 5 alumnos y les haces un examen. Tendrás por cada alumno una nota entera (entre 0 y 10) . ¿Cómo manejarías esa información en Java? Podrías pensar en algo como esto:

int nota1 = 8;
int nota2 = 6;
int nota3 = 2;
int nota4 = 7;
int nota5 = 6;

Al ser 5 notas no parece muy descabellado, pero ¿es cómodo para operar? Imagina que quieres que tu programa obtenga la nota más alta y la más baja. Tendrás que realizar unas cuantas comparaciones entre todas las variables. Puedes pensar: «no es para tanto, solo son 5 notas». Cierto, pero ¿qué pasaría si en vez de 5 alumnos tuvieses 50? Sería imposible manipular ese volumen de información con tantas variables.

¿Te podría ayudar un array en este caso? La respuesta es si.

Volvamos a la definición inicial de array y vamos a analizarla por partes:

«Un array es una estructura de tamaño fijo». En el caso de los alumnos, ¿Conoces el número de datos que vas a manipular? Si, es el número de alumnos, en este ejemplo son 5. Y siempre es el mismo número, no va a variar.

«Almacena datos del mismo tipo». ¿Qué dato queremos almacenar por cada alumno? Su nota. Y todas las notas son enteros (números entre 1 y 10), por tanto son del mismo tipo.

«Se almacenan de forma consecutiva en memoria»: Esto no lo vas a poder ver a simple vista, pero no te preocupes que te lo explico ahora mismo.

Cuando declaras un array Java reserva una porción de memoria del tamaño apropiado para el tipo de dato que pretendes guardar y para la cantidad de datos de ese tipo que contendrá el array. Volviendo al ejemplo inicial de los alumnos necesitarías tamaño suficiente para almacenar 5 números enteros (5 notas). Esa reserva de memoria se hace dentro de un único bloque y los datos que se almacenen en el array estarán consecutivos dentro de la memoria, almacenados uno detrás de otro.

Fíjate en la siguiente imagen:

¿Qué es un array en Java?

Las zonas sombreadas en gris son ajenas al array. No sabemos qué hay en ellas, pero tampoco nos importa.

Lo que está en verde es el espacio que se ha reservado para el array. Como puedes ver está dividido en 5 partes (una por nota) del mismo tamaño (el tamaño necesario para almacenar enteros). Y todas esas partes van seguidas, no hay huecos grises en medio.

Esta distribución de la memoria simplifica el acceso a los datos del array. Conociendo dónde se encuentra el primero podrás acceder al resto fácilmente puesto que todos van seguidos.

Sigue leyendo. Al final del artículo te explico cómo acceder a los datos almacenados dentro del array. Pero antes vamos a ver cómo utilizar arrays en java.

¿Cómo se declaran arrays en Java?

El primer paso para usar arrays en Java es declararlos. Es bastante sencillo: hay que indicar de qué tipo son los datos que se pueden almacenar y cuántos datos se van a almacenar. Con esa información Java podrá reservar la memoria necesaria para trabajar con el array.

Mira el siguiente código. Declaro dos arrays enteros de diferente forma, pero la base es la misma: indicar el tipo y el tamaño. Sigue leyendo que te explico cada uno en detalle:

int [] notas = new int [5];
int [] notas2 = {8, 6, 2, 7, 6};

En la línea 1 estoy declarando un array de enteros (int) de tamaño 5. Si te fijas uso el operador new para decirle a Java que reserve memoria para 5 enteros (int [5]). Como no le proporciono más información Java rellenará el array con ceros. Por lo que tendremos algo así:

¿Cómo se declara un array en Java?

Vamos ahora con la línea 2. En este caso no uso el operador new para reservar memoria y tampoco indico de forma explícita el número de datos que contendrá el array. ¿Cómo sabe entonces Java que quiero un array de 5 enteros? Porque se lo indico de forma implícita. Lo que estoy haciendo en este caso es indicar entre llaves ({ }) los datos que quiero que tenga el array. Como puedes comprobar, entre las llaves hay 5 números enteros separados por comas. De esa forma Java sabe que debe reservar espacio para 5 elementos y, además, debe inicializar cada elemento con el valor que yo le indico. Por tanto el resultado será este:

¿Cómo se inicializa un array en Java?

Como puedes ver en ambos casos consigo el mismo resultado: un array de 5 enteros. La diferencia son los valores con los que se inicializa el array. ¿Cuál elegir entonces? Pues dependerá de si conocer los valores iniciales o no.

Ya tenemos el array. ¿Y ahora qué? Pues a trabajar con el. Sigue leyendo para saber cómo acceder a los datos del array.

¿Cómo se accede a los datos de un array en Java?

Como ya mencioné anteriormente, cuando declaramos un array Java reserva memoria suficiente en función del número de elementos que le indiquemos. También sabemos que una vez reservada la memoria conocemos la posición que ocupa el primer elemento. La posición del resto de elementos la podemos saber porque van consecutivos.

Teniendo en cuanta todo esto podremos acceder a los datos almacenados en un array con la ayuda de índices. Tanto si queremos escribir datos en el array, como si queremos leerlos.

¿Cómo se escriben datos en un array?

Empecemos por la escritura. Voy a declarar un array de enteros de 5 elementos sin inicializar tal y como vimos anteriormente:

int [] notas = new int [5];

Ahora quiero almacenar datos en las distintas posiciones del array. Para ello voy a utilizar índices que le indiquen a Java cuántas posiciones me quiero desplazar desde la inicial y de esa forma sepa dónde debe escribir.

Posiciones de un array en Java

Por ejemplo, si quiero guardar una nota en la primera posición el desplazamiento será 0:

notas[0] = 8;

Java sabe que debe guardar un 8 en la primera posición.

Escritura de un array en Java

Siguiendo esta lógica podrás acceder al segundo elemento desplazándote una posición desde la inicial, por tanto el índice será 1. Para acceder al tercer elemento el indice será 2 y así sucesivamente:

notas[1] = 6; //segundo elemento
notas[2] = 2; //tercer elemento
notas[3] = 7; //cuarto elemento
notas[4] = 6; //quinto elemento

¿Qué ocurre si intentas acceder a una posición cuyo índice supera el tamaño reservado? Por ejemplo esto:

notas[5] = 7; //sexto elemento

Recuerda que nuestro array solo tiene 5 elementos, por lo que los únicos índices permitidos irán del 0 al 4. Si utilizas un índice fuera de ese rango se producirá un error en ejecución porque estás intentando acceder a una zona de memoria no permitida (la zona sombreada en gris). El error que se produce es de tipo java.lang.ArrayIndexOutOfBoundsException.

¿Cómo se leen datos de un array?

Vamos ahora con la lectura. La lógica es exactamente la misma que en la escritura. Debes utilizar los índices de la misma manera.

Por ejemplo, si quieres leer la nota que se encuentra en la primera posición para almacenarla en una variable tendrás que hacerlo así:

int n = notas[0];

O si quieres mostrar por pantalla la nota que se encuentra en la primera posición tendrás que hacerlo de esta manera:

System.out.println(notas[0]); 

Lo mismo ocurre con el resto de posiciones:

System.out.println(notas[1]);
System.out.println(notas[2]);
System.out.println(notas[3]);
System.out.println(notas[4]); 

Recuerda no pasarte nunca de los límites del array y utiliza sólo los índices permitidos en función del tamaño del mismo o te ocurrirá lo mismo que vimos en la escritura, se producirá un error de tipo java.lang.ArrayIndexOutOfBoundsException.

Y con esto hemos terminado con las nociones básicas de Arrays en Java. En el siguiente artículo te cuento cómo recorrer arrays de forma automática para no tener que acceder a los elementos uno a uno manualmente.

Los comentarios están cerrados.

Subir ↑