Arreglos en Java
Arreglos en Java
Un array es una colección finita de datos del mismo tipo, que se almacenan en posiciones
consecutivas de memoria y reciben un nombre común.
Por ejemplo, supongamos que queremos guardar las notas de los 20 alumnos de una clase.
Para almacenar las notas utilizaremos un array de 20 elementos de tipo double y en cada
elemento del array guardaremos la nota de cada alumno.
Para acceder a cada elemento del arreglo se utiliza el nombre del arreglo y un índice que indica la
posición que ocupa el elemento dentro del arreglo.
El índice se escribe entre corchetes.
El primer elemento del arreglo ocupa la posición 0, el segundo la posición 1, etc. En un arreglo de
N elementos el último ocupará la posición N-1.
Declarar un arreglo
En la declaración se crea la referencia al arreglo.
La referencia será el nombre con el que manejaremos el arreglo en el programa.
Se debe indicar el nombre del arreglo y el tipo de datos que contendrá.
De forma general un arreglo unidimensional se puede declarar en java de cualquiera de estas dos
formas:
tipo [] nombreArray;
tipo nombreArray[];
tipo: indica el tipo de datos que contendrá. Un arreglo puede contener elementos de tipo
primitivo o referencias a objetos.
nombreArray: es la referencia al arreglo. Es el nombre que se usará en el programa para
manejarlo.
Por ejemplo:
int[] ventas; //arreglo de datos de tipo int llamado ventas
double[] temperaturas; //arreglo de datos de tipo double llamado temperaturas
String [] nombres; //arreglo de datos de tipo String llamado nombres
Instanciar un arreglo
Mediante la instanciación se reserva un bloque de memoria para almacenar todos los elementos
del arreglo.
La dirección donde comienza el bloque de memoria donde se almacenará el arreglo se asigna al
nombre del arreglo.
De forma general:
nombreArray = new tipo[tamaño];
nombreArray: es el nombre creado en la declaración.
tipo: indica el tipo de datos que contiene.
1
tamaño: es el número de elementos del arreglo. Debe ser una expresión entera positiva. El
tamaño del arreglo no se puede modificar durante la ejecución del programa.
new: operador para crear objetos. Mediante new se asigna la memoria necesaria para ubicar el
objeto. Java implementa los arreglos como objetos.
Por ejemplo:
ventas = new int[5]; //se reserva memoria para 5 enteros y
//se asigna la dirección de inicio del array a ventas.
Por ejemplo:
int [] ventas = new int[5];
El tamaño del arreglo también se puede indicar durante la ejecución del programa, es decir, en
tiempo de ejecución se puede pedir por teclado el tamaño del array y crearlo:
Si no hay memoria suficiente para crear el array, new lanza una excepción
java.lang.OutOfMemoryError.
2
INICIALIZAR ARREGLOS UNIDIMENSIONALES
Un array es un objeto, por lo tanto, cuando se crea, a sus elementos se les asigna
automáticamente un valor inicial:
Por ejemplo:
double [] notas = {6.7, 7.5, 5.3, 8.75, 3.6, 6.5};
Se declara el array notas de tipo double, se reserva memoria para 6 elementos y se les asignan
esos valores iniciales.
Ejemplos:
//creación de un array de 4 elementos booleanos
boolean [] resultados = {true,false,true,false};
3
Si se intenta acceder a un elemento que está fuera de los límites del array (un elemento con índice
negativo o con un índice mayor que el que corresponde al último elemento del array) el
compilador no avisa del error. El error se producirá durante la ejecución. En ese caso se lanza una
excepción java.lang.ArrayIndexOutOfBoundsException.
Se puede saber el número de elementos del array mediante el atributo length.
Podemos utilizar length para comprobar el rango del array y evitar errores de acceso.
Por ejemplo, para asignar un valor a un elemento del array que se lee por teclado:
4
RECORRER UN ARRAY UNIDIMENSIONAL
Para recorrer un array se utiliza una instrucción iterativa (normalmente una instrucción for,
aunque también puede hacerse con while o do..while) utilizando una variable entera como índice
que tomará valores desde el primer elemento al último o desde el último al primero.
Por ejemplo, el siguiente fragmento de programa Java declara un array de 7 elementos de tipo
double y le asigna valores iniciales. A continuación recorre el array, utilizando la instrucción for,
para mostrar por pantalla el contenido del array.
double[] notas = {2.3, 8.5, 3.2, 9.5, 4, 5.5, 7.0}; //array de 7 elementos
for (int i = 0; i < 7; i++) {
System.out.print(notas[i] + " "); //se muestra cada elemento del array
}
Para evitar errores de acceso al array es recomendable utilizar length para recorrer el array
completo.
Por ejemplo:
double[] notas = {2.3, 8.5, 3.2, 9.5, 4, 5.5, 7.0}; //array de 7 elementos
for (int i = 0; i < notas.length; i++) {
System.out.print(notas[i] + " "); //se muestra cada elemento del array
}
class Main {
public static void main(String[] args) {
5
nombreArray: es el nombre del array que vamos a recorrer.
Mediante este bucle solo podemos acceder a los elementos del array. No podemos hacer
modificaciones en su contenido.
Ejemplo: El siguiente programa crea un array temperatura de 10 elementos. Lee por teclado los
valores y a continuación los muestra por pantalla.
for(double t: temperatura){
System.out.print(t + " ");
}
System.out.println();
}
}
6
Gráficamente podemos representar la disposición real en memoria del array anterior así:
En Java se pueden crear arrays irregulares en los que el número de elementos de cada fila es
variable. Solo es obligatorio indicar el número de filas.
Por ejemplo:
int [][] m = new int[3][]; // Creación de matriz m de 3 filas
Gráficamente podemos representar la disposición real en memoria del array anterior así:
7
INICIALIZAR MATRICES
Un array es un objeto, por lo tanto, cuando se crea, a sus elementos se les asigna
automáticamente un valor inicial:
0 para arrays numéricos
'\u0000' (carácter nulo) para arrays de caracteres
false para arrays booleanos
null para arrays de String y de referencias a objetos
Por ejemplo:
int [][] numeros = {{6,7,5},{3, 8, 4}, {1,0,2}, {9,5,2}};
Se crea la matriz numeros de tipo int, de 4 filas y 3 columnas, y se le asignan esos valores iniciales.
RECORRER MATRICES
Para recorrer una matriz se anidan dos bucles for. En general para recorrer un array
multidimensional se anidan tantas instrucciones for como dimensiones tenga el array.
int[][] a = {
{1, -2, 3},
{-4, -5, 6, 9},
{7},
};