INACAP
Universidad Tecnolgica de Chile
Sede Santiago Centro
Taller de Programacin I
Curso Java J2SE
Tema 04:
Arreglos y Matrices
en Java
Ing. Manuel Lpez Ramos
(versin 2)
Parte I
Arreglos en Java
Arreglos en Java
Un arreglo es una estructura de datos lineal, que puede almacenar 1 ms datos, y que
presenta slo una dimensin (1 dimensin = largo).
variable Posiciones
de datos
Celdas de datos
referencia
Los datos de un arreglo se almacenan en celdas de memoria, de manera contigua. A cada
celda se le asigna un nmero entero que indica la posicin de un dato con respecto a los
dems.
La primera posicin es la cero; la ltima posicin es igual al largo del arreglo menos 1.
Los arreglos, al igual que los strings, tienen una propiedad
fundamental: su largo o cantidad de celdas de datos.
a) primera posicin del arreglo = 0
b) ltima posicin del arreglo = largo del arreglo - 1
Arreglos en Java
Los arreglos slo pueden almacenar datos de un slo tipo primitivo o de un slo tipo de objetos.
Para definir un arreglo se debe indicar: el tipo de todos sus datos, la cantidad de celdas de memoria (o
posiciones) a generar y un nombre de variable. Para crear las celdas se utiliza la palabra clave new.
Los arreglos son tipos de datos para los cuales, una vez definido el largo del arreglo, ste no puede ser
modificado con posterioridad -> arreglos de largo no modificable
arreglo nulo
a) Forma de C:
int arrDatos[]; // slo declaracin
char arrLetras[] = new char[4];
b) Forma de Java:
int[] arrDatos = new int[5];
float[] notasCurso = new float[6];
Arreglos en Java
Para inicializar un arreglo, basta con definir sus elementos entre llaves, separados con
comas. Esto automticamente crea celdas de datos para cada elemento.
int[] arrDatos = {9, 8, 7, 6, 5};
float[] notasCurso = {4.0F, 1.0F, 6.5F, 5.5F, 7.0F, 4.5F};
boolean[] estadoPersonaje = {false, true};
Arreglos en Java
Diferentes formas de declaracin y definicin de arreglos: notar que los arreglos tambin
utilizan la notacin de referencias para unir la variable con el espacio para datos.
int[] arrDatos;
int[] arrDatos = null;
arreglo nulo
(sin espacio para datos)
int[] arrDatos = new int[5];
espacio de datos
inicializado con ceros
int[] arrDatos = {9, 8, 7, 6, 5};
espacio con datos
inicializados
explcitamente
Arreglos en Java
Arreglos de strings (o de cualquier objeto): notar que para un arreglo de objetos (por ejemplo de
strings) la notacin grfica de referencias indica cuatro elementos:
la variable
la referencia de la variable al espacio de datos
el espacio de datos (que contiene referencias a 1 varios strings)
los strings, en otras celdas de memoria.
Por ejemplo,recordando cmo se representaba una variable de string, se tiene que:
String frase3 = String[] diccionario =
"Buenas noches!"; {"rbol", "barco", "casa", "dado", "e"};
Arreglos en Java
Para almacenar un nuevo dato en el arreglo, se debe indicar el nombre del arreglo, la
posicin a utilizar y el nuevo dato a almacenar.
int[] arrDatos = {9, 8, 7, 6, 5};
arrDatos[3] = 45; nuevo dato a almacenar
posicin de la celda a utilizar
arrDatos[1] = -234;
Arreglos en Java
Para utilizar un dato de un arreglo basta con indicar el nombre del arreglo y la posicin que
se requiera.
int total = arrDatos[0] + arrDatos[2] * 3 - arrDatos[4];
arrDatos[2] = arrDatos[0] - total;
Parte II
Matrices en Java
Matrices en Java
Las matrices son estructuras de datos derivadas de los arreglos, que puede almacenar 1
ms datos, y que presentan dos ms dimensiones (largo, ancho, profundidad, etc.) Las
ms populares son las de 2 y 3 dimensiones, aunque pueden existir matrices con ms
dimensiones, si as se requiere.
Posiciones
de columna
variable
referencia Posiciones
Celdas de datos de fila
En cada dimensin, la primera posicin es la cero; la ltima posicin de cada dimensin es
igual al largo de la dimensin menos 1.
Matrices en Java
Las matrices, al igual que los arreglos, slo pueden almacenar datos de un slo tipo primitivo o de un
slo tipo de objetos y su tamao, una vez definido, no se puede modificar, a menos que se desee perder
todos los datos ya almacenados en ella.
Si slo se declara una matriz, su inicializacin por defecto ser hecha con el valor null.
a) Forma de Java:
int[][] matDatos; matriz nula
int[][] matDatos = null;
int[][] matDatos = new int[3][5];
columnas
filas
Matrices en Java
Para inicializar una matriz, basta con definir sus elementos entre llaves, separados con
comas. La inicializacin consta de los siguientes elementos:
un par de llaves externas para definir toda la matriz
pares de llaves internas para definir filas de la matriz, segn la cantidad de dimensiones
que tenga la estructura.
Por ejemplo, para una matriz de 3 filas x 5 columnas (2 dimensiones), se define lo siguiente:
int[][] matDatos =
{
{ 4, -1, 5, 0, 9 }, // Fila 0
{ 292, 12, -34, 67, -8 }, // Fila 1
{ 45, 0, 0, 0, 1} // Fila 2
};
Matrices en Java
Para almacenar un nuevo dato en la matriz, se debe indicar el nombre de la matriz, la
posicin a utilizar (con una coordenada de N valores para N dimensiones) y el nuevo dato a
almacenar.
int[][] matDatos = { { 4, -1, 5, 0, 9 }, { 292, 12, -34, 67, -8 },
{ 45, 0, 0, 0, 1} };
posicin de fila-columna
matDatos[2][3] = -10;
nuevo dato a almacenar
Matrices en Java
Para leer un dato de la matriz y utilizarlo, se especifican sus coordenadas de fila-columna
dentro de una expresin aritmtica u operatoria de objetos.
int[][] matDatos = { { 4, -1, 5, 0, 9 }, { 292, 12, -34, 67, -8 },
{ 45, 0, 0, -10, 1} };
System.out.println( matDatos[2][3] + matDatos[1][2] );
+
Matrices en Java
Nota importante: la representacin de matrices utilizada en las diapositivas anteriores puede
ser considerada como una simplificacin, debido a que la forma real define cada una de las
filas como independiente de las dems (como lo indica el diagrama siguiente):
La independencia de las filas permite inclusive crear matrices con filas de diferente tamao
(por ejemplo, la fila 0 con 5 celdas, la fila 1 con 20 celdas y la fila 2 con 100 celdas, todas
dentro de la misma matriz).
Propiedades de los arreglos y matrices (en Java)
Notas importantes:
1.- La cantidad de elementos del arreglo (el largo) de arr1 es igual a:
largoArreglo = arr1.length()
2.- La cantidad de filas de la matriz mat1 es igual a:
totalFilas = mat1.length()
3.- La cantidad de columnas de la fila nF de la matriz mat1 es igual a:
totalCols = mat1[nF].length()
NOTA: para una matriz rectangular, la cantidad de columnas de cada fila es igual a:
totalCols = mat1[0].length()