Publicado el 11 de Junio del 2018
981 visualizaciones desde el 11 de Junio del 2018
160,7 KB
60 paginas
Creado hace 12a (26/04/2012)
Tema 5
Arreglos y Cadenas en Java
Arreglos
Un arreglo es una lista de variables del mismo tipo que se encuentran en localidades
contiguas de memoria y que comparten el mismo nombre. Cada una de las variables de
la lista, llamadas elementos, puede ser accedida por el nombre del arreglo y su posición
en él. Dependiendo de la distribución lógica (no física) de sus elementos, los arreglos
pueden clasificarse en:
• Unidimensionales, si visualizamos a los elementos acomodados en una fila (o
columna).
• Bidimensionales, si los visualizamos acomodados en una tabla.
• Tridimensionales, si los visualizamos acomodados en varias tablas formando una
estructura tridimensional.
• Etc. No hay restricciones en el número de dimensiones que un arreglo pueda
tener.
Arreglos Unidimensionales
En un arreglo unidimensional, la posición de un elemento en el arreglo está dada por un
valor entero llamado índice que representa la distancia de ese elemento con respecto al
primer elemento del arreglo. Por ejemplo si deseamos almacenar las calificaciones de un
grupo de alumnos podemos tener un arreglo llamado califs formado de 50 variables:
El número entre corchetes es el índice. Note que el primer elemento tiene un índice igual
a 0 y el último un índice igual a n-1, donde n es el número de elementos del arreglo.
califs[0] representa la calificación del primer alumno,
califs[1] representa la calificación del segundo alumno, etc.
ITSON
Manuel Domitsu Kono
Arreglos y Cadenas en Java
tipo nomArreglo[];
114
Referencia a un Arreglo Unidimensional
Al igual que con los objetos, el nombre de un arreglo es una referencia al arreglo, esto es,
utilizamos el nombre para acceder a los elementos del arreglo.
La sintaxis para declarar la referencia a un arreglo unidimensional es la siguiente:
ó
tipo es el tipo base del arreglo, el tipo de cada una de las variables que forman el
arreglo, y puede ser cualquier tipo de datos: primitivos o clases. nomArreglo es un
identificador, el nombre de la referencia al arreglo.
Por ejemplo:
tipo[] nomArreglo;
int califs[];
double[] precios;
Cancion canciones[];
nomArreglo = new tipo[tamArreglo];
Creación de un Arreglo Unidimensional
Al igual que con los objetos, los arreglos deben crearse antes de emplearse, esto reserva
memoria para el arreglo. La sintaxis para crear un arreglo es la siguiente:
tamArreglo es una expresión de tipo entero que indica el tamaño del arreglo, el número
de variables de la lista. Los corchetes encerrando a tamArreglo no indican que éste sea
opcional. Aquí forman parte de la sintaxis de la creación de un arreglo.
Por ejemplo:
califs = new int[50];
precios = new double[100];
canciones = new Cancion[20];
La declaración de la referencia a un arreglo y el reservado de memoria para el mismo
pueden combinarse en una sentencia cuya sintaxis es:
tipo nomArreglo[] = new tipo[tamArreglo];
ó
ITSON
Manuel Domitsu Kono
Tema 5
Arreglos y Cadenas en Java
115
tipo[] nomArreglo = new tipo[tamArreglo];
Por ejemplo:
int califs[] = new int[50];
double[] precios = new double[100];
Cancion canciones[] = new Cancion[20];
tipo nomArreglo[] = {cte1 [, cte2] ... }
Inicialización de Arreglos Unidimensionales
Los arreglos al igual que las variables de los tipos básicos pueden inicializarse al
momento de crearse. La sintaxis para inicializar un arreglo es
ó
Donde cte1 [, cte2] ... es una lista de constantes encerrada entre llaves, { y },
que son los valores a los que se inicializan los elementos del arreglo. El tamaño del
arreglo es el número de constantes. Por ejemplo, en la declaración
estamos declarando al arreglo x y lo estamos inicializando a:
tipo[] nomArreglo = {cte1 [, cte2] ... }
int x[] = {0, 1, 2, 3, 4};
0
1
2
x
3
4
Acceso a los elementos de un Arreglo Unidimensional
Para acceder a un elemento de un arreglo unidimensional se utiliza el nombre del
elemento, tal como lo haríamos con cualquier variable. El nombre de cada elemento de un
arreglo está formado por el nombre del arreglo y su posición en el arreglo. Esta posición
se conoce como el índice del elemento. El índice del primer elemento de un arreglo
siempre es cero. El índice de un elemento puede expresarse mediante cualquier
expresión entera que al evaluarse nos indica el elemento en particular al que queremos
acceder. Por ejemplo
le asigna al quinto elemento del arreglo califs el valor de 8.
accede al i-ésimo elemento del arreglo califs, mientras que
califs[4] = 8;
califs[i]
mats[j + 3]
ITSON
Manuel Domitsu Kono
Arreglos y Cadenas en Java
suma = 0;
for(i = 0; i < nAlumnos; i++) suma += califs[i];
promedio = (double)suma/nAlumnos;
116
accede al j-ésimo + 3 elemento del arreglo mats.
Por ejemplo supongamos que deseamos acceder en forma secuencial a los elementos
del arreglo califs para sacar el promedio de las calificaciones. El código para hacer
esto sería
donde nAlumnos es el número de calificaciones que están almacenadas en el arreglo.
Este valor puede ser menor o igual al tamaño del arreglo califs.
Cada vez que se le asigna un valor u objeto a un elemento de un arreglo, el sistema de
ejecución de Java verifica que el tipo del arreglo sea compatible con el tipo del valor u
objeto asignársele. Si no son compatibles ocurre una excepción del tipo:
java.lang.ArrayStoreException.
Cada vez que se accede a un elemento de un arreglo, el sistema de ejecución de Java
verifica que el valor del índice es un valor válido, esto es, que es número comprendido
entre 0 y tamArreglo – 1. De no ser así ocurre una excepción del tipo:
java.lang.ArrayIndexOutOfBoundsException.
Arreglos Unidimensionales y Métodos
En Java los arreglos son objetos. Podemos obtener el tamaño del arreglo en elementos
de la siguiente manera:
En Java podemos pasarle como parámetro a un método, una referencia a un arreglo. No
se le está pasando una copia del arreglo, sólo la referencia. La sintaxis de un parámetro
que representa la referencia a un arreglo unidimensional es la siguiente:
donde tipo es el tipo base del arreglo y nomParArreglo es el nombre del parámetro
que representa la referencia al arreglo. Note que los corchetes están vacíos.
Al llamar al método, el argumento será la referencia al arreglo, el cual es el nombre del
arreglo:
También es posible que un método nos regrese una referencia a un arreglo. La sintaxis
para declarar que el método regresa una referencia a un arreglo unidimensional es:
tipo nomParArreglo[]
nomArreglo.length
nomArreglo
ITSON
Manuel Domitsu Kono
Tema 5
Arreglos y Cadenas en Java
117
tipo[] nomMetodo() {
...
}
donde tipo es el tipo base del arreglo y nomMetodo es el nombre del método que nos
regresa la referencia a un arreglo.
Ejemplos Sobre Arreglos Unidimensionales
Para el ejemplo del programa del amante de la música y el cine, se desea implementar
un mecanismo que permita catalogar (almacenar y consultar) su colección. En este
tema el mecanismo se implementará usando arreglos, aunque los arreglos no permiten
almacenar permanentemente los datos. Más adelante se modificará este mecanismo
para que emplee archivos y una base de datos.
Dado que los arreglos tienen un tamaño fijo definido al tiempo de compilación, es
posible que el arreglo se llene y no se puedan agregar más datos. En lugar de verificar
si hay espacio en el arreglo para almacenar un dato, dejaremos que el sistema de
ejecución de Java lance una excepción del tipo
java.lang.ArrayIndexOutOfBoundsException si queremos acceder más allá de
los límites del arreglo, atraparemos esa excepción y relanzaremos una excepción
encadenada del tipo PersistenciaException. Por otro lado si al querer modificar o
eliminar un dato, el dato no existe, también se lanzará una excepción del tipo
PersistenciaException. El siguiente código muestra la implementación de la
excepción PersistenciaException.
PersistenciaException.java
/*
* PersistenciaException.java
*
* Creada el 13 de septiembre de 2007, 12:01 AM
*/
package excepciones;
/**
* Esta clase representa a las excepciones lanzadas por las clases
* que encapsulan la persistencia.
*
* @author mdomitsu
*/
public class PersistenciaException extends RuntimeException {
/**
* Constructor por omisión. Construye una excepción con un mensaje de error
* nulo.
*/
public PersistenciaException() {
}
/**
* Construye una excepción con el mensaje de error del parámetro.
ITSON
Manuel Domitsu Kono
Arreglos y Cadenas en Java
118
* @param msj Mensaje de error.
*/
public PersistenciaException(String msj) {
super(msj);
}
/**
* Construye una excepción con el mensaje de error del parámetro y la causa
* original del error.
* @param msj Mensaje de error.
* @param causa Causa original del error.
*/
public PersistenciaException(String msj, Throwable causa) {
super(msj, causa);
}
/**
* Construye una excepción la causa original del error.
* @param causa Causa original del error.
*/
public PersistenciaException(Throwable causa) {
super(causa);
}
}
Para encapsular el mecanismo de almacenamiento de los datos se construyen cuatro
clases nuevas: Medios, Canciones, Peliculas y Generos se muestran en el
diagrama de clases de la figura 5.1
Figura 5.1
ITSON
Manuel Domitsu Kono
Tema 5
Arreglos y Cadenas en Java
119
La clase Medios tiene como atributos una referencia a un arreglo de tipo Medio y un
entero con el número de medios en el catálogo. Los métodos de la clase Medios
permiten buscar un medio dentro del catálogo dada su clave, agregar, actualizar y
eliminar un medio al catálogo, listar los medios que sea
Comentarios de: Tema 5 - Arreglos y cadenas en Java (0)
No hay comentarios