📦 Arrays de datos primitivos en Java
🎯 Un array permite almacenar varios valores del mismo tipo en una única variable, accediendo a ellos mediante índices.
🧠 ¿Qué es un array?
Un array está hecho de bloques contiguos de memoria que se divide en varias celdas. A veces, las celdas de un array se denominan slots.
Un array es una estructura que:
- 📌 Almacena varios valores en celdas, al valor almacenado en la celda se le suele llamar elemento.
- 📌 Todos del mismo tipo
- 📌 Tiene un tamaño fijo
- 📌 Se accede a cada elemento mediante un índice
- 📌 Los índices empiezan siempre en 0
- 📌 Si hay N celdas en un array, entonces los índices van del 0 hasta N-1
- 📌 La longitud de un array es el número de celdas
Ejemplo visual:

En el ejemplo de la imagen hemos creado un array de enteros. También se podría crear un array de caracteres, de String, etc. Esto se podría hacer tanto para tipos de datos primitivos como para objetos.
🧱 Declaración de un array
Para declarar un array, se hace de la misma forma que haríamos si quisiéramos declarar una variable pero añadiendo [ ]:
int[] numeros;
🔎 Aquí solo declaramos el array, pero no tiene tamaño todavía.
🏗️ Creación (reserva de memoria)
Los arrays en Java se crean como objetos, y como cualquier otro objeto en Java, para construirlo utilizamos la palabra reservada new. Para inicializar un array usaremos la palabra new + tipo de dato + tamaño del array entre corchetes[]
numeros = new int[4];
📌 Ahora el array tiene 4 posiciones:
- numeros[0]
- numeros[1]
- numeros[2]
- numeros[3]
Los índices en un array son enteros que especifican la posición que ocupa el elemento dentro del array. Por tanto podemos manejar los índices con variables enteras.
Warning
Una vez ha sido construido el array no es posible cambiar su tamaño. Las celdas de un array se inicializan con el valor predeterminado para su tipo. Cada celda de un array de tipo numérico primitivo se inicializa a cero. Y cada celda de un array de referencias a objetos se inicializa en nulo (null).
⚡ Declarar y crear en una sola línea
int[] edades = new int[5];
O directamente, también se puede con valores iniciales:
int[] edades = {18, 20, 22, 19, 25};
De esa forma, también le indicamos indirectamente el tamaño del array. Java cuenta el número de elementos que hay entre {} y crea un array de ese tamaño y además los asigna en posiciones consecutivas dentro del array.
🎯 Acceso a los elementos del array
Se accede usando corchetes y el índice:
System.out.println(edades[0]); // 18
System.out.println(edades[3]); // 19
⚠️ Error típico:
System.out.println(edades[5]); // ❌ ArrayIndexOutOfBoundsException, nos hemos pasado
✏️ Modificar valores en una posición del array
Para modificar un valor dentro de una celda del array tenemos que acceder a su posición dentro del array.
edades[2] = 30;
int[] miArray = new int[10];
miArray[2] = 5; //guardamos en la posición 2 del array el valor 5
📌 El array no se redimensiona, solo cambia el valor almacenado.
También podemos modificar sus valores utilizando la estructura de bucle for, para esto, debemos saber con antelación el valor de los elementos del array:
int[] miArray = new int[10];
for(int i = 0; i < 10; i++) {
miArray[i] = i * 10;
}
Warning
Recuerda que los elementos del array empiezan con índice 0, por tanto, en realidad la posición 2 sería la 3.
🔁 Recorrer un array con for
for (int i = 0; i < edades.length; i++) {
System.out.println(edades[i]);
}
🧠 i representa el índice.
🔄 Recorrer un array con for-each
for (int edad : edades) {
System.out.println(edad);
}
📌 Úsalo cuando: - No necesitas el índice - Solo quieres leer los valores
🧩 Longitud del array
Una buena práctica, es utilizar una propiedad integrada dentro de array, en vez de hardcodear literales de tamaño dentro del bucle. Esta propiedad es length:
for(int i = 0; i < miArray.length; i++) {
System.out.println("Elemento " + i + " valor " + miArray[i]);
}
Si ahora cambiamos la longitud del array en su definición, no se vería afectado ningún bucle o lugar donde se utilizara miArray.length.
📤 Pasar un array a un método como argumento
Al igual que hacíamos con las variables simples, también podemos pasar arrays a los métodos.
public static void imprimirArray(int[] array) {
for(int i = 0; i < array.length; i++) {
System.out.println("Elemento " + i + " valor " + array[i]);
}
}
public static void main() {
int[] miArray = new int[10];
imprimirArray(miArray);
}
public static void mostrar(int[] datos) {
for (int d : datos) {
System.out.println(d);
}
}
Llamada:
mostrar(edades);
📥 Devolver un array desde un método
Para devolver un objeto de tipo array en un método simplemente añadiremos []:
public static int[] calcular(int n) {
int[] resultado = new int[n];
for (int i = 0; i < resultado.length; i++) {
resultado[i] = i * 2;
}
return resultado;
}
🧍 Arrays de objetos
String[] nombres = {"Ana", "Luis", "María"};
📌 Un array puede almacenar objetos, no solo tipos primitivos.
🧪 Ejemplo completo del uso de un array
Vamos a presentar un ejemplo de un caso real para el que los arrays son muy efectivos. Por ejemplo pedir al usuario que inserte números y mostrar la media de los números insertados.
public class MiArray {
private static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int[] enteros = leerEnteros(5);
//imprimimos los valores
for (int i = 0; i < enteros.length; i++) {
System.out.println("Elemento en posición " + i + " valor " + enteros[i]);
}
System.out.println("La media del array es " + calcularMedia(enteros));
}
public static int[] leerEnteros(int elementos) {
System.out.println("Inserta " + elementos + " de tipo entero.");
int[] array = new int[elementos];
for (int i = 0; i < array.length; i++) {
array[i] = sc.nextInt();
}
return array;
}
public static double calcularMedia(int[] array) {
int suma = 0;
for (int i = 0; i < array.length; i++) {
suma += array[i];
}
return (double) suma / (double) array.length;
}
}
⚠️ Errores comunes
❌ Acceder a posiciones que no existen
❌ Confundir índice con valor
❌ Pensar que el array crece solo
✅ Buenas prácticas
✔️ Usa siempre length
✔️ Inicializa los arrays correctamente
✔️ Usa for-each cuando sea posible