Arrays Programación Licenciatura de Lingüística y Nuevas Tecnologías 2007-2008 Agenda • • • • • Definición Declaración, creación, inicialización Acceso a los elementos del array Propiedades de los arrays Array como argumento de entrada de un método ¿Qué es un array? • Grupo de datos en una misma unidad = estructura de datos. • Un array es un tipo de estructura de datos, es una secuencia de ítems del mismo tipo. • Cada ítem es accesible con su índice. • El tipo de los items es el mismo en todo el array. Puede ser básico (int, char,...) o de objetos (String, Alumno, Word,...). 0 1 … n-2 n-1 3 Declarar una variable de tipo array • Declaración de una variable de tipo array: tipo[] nombre_variable • El tipo puede ser básico como int o de objeto como String • Por ejemplo: – int[] values; – double[] notas; – String[] cadenas; • Un array es un objeto, o sea que las variables values, notas y cadenas son variables de objeto. 4 Creación de un objeto array (1) • Para crear un objeto array: – nombre_variable = new tipo[numero_de_elementos]; • Por ejemplo, depués de declarar values y cadenas: – values = new int[100] ; Hemos creado una tabla de 100 elementos de tipo int. La variable de objeto values apunta al primer elemento. – cadenas = new String[10]; Hemos creado una tabla de 10 elementos de tipo String. La variable de objeto cadenas apunta al primer elemento. • También podemos declarar y crear el array al mismo tiempo: – int[] values = new int[100] ; – String[] cadenas = new String[10]; 5 Creación de un objeto array (2) • También, se puede crear y inicializar un array a la declaración: – String[] alumnos = {"eva","cristina","sergi","teresa"}; Se ha creado un array con 4 cadenas – double[] notas = {10 ,5.5 } Se ha creado un array con 2 double • Incorrecto (error de compilación): – String[] alumnos; – alumnos = {"eva","cristina","sergi","teresa"}; 6 Creación de un objeto array (3) • Podemos declarar un array de cualquier tipo de objeto: – Alumno[] alumnos = new Alumnos[10]; Los elementos del array, por ejemplo alumnos[7], tienen como valor null. alumnos 0 1 2 3 4 5 6 7 8 9 null null null null null null null null null null 7 Acceso a los elementos del array (1) • El tamaño del array se puede saber mediante la “variable” length. • El tamaño de un array es fijo, no se puede cambiar. • El primer elemento del array está al índice 0, el siguiente al índice length-1. • Si intentamos acceder a un elemento mediante un índice fuera de rango, tendremos un ArrayIndexOutOfBoundException. • Un ejemplo – – – – – int[] numeros = new int[5]; System.out.println(numeros.length); // devuelve 5 numeros[0]=4; numeros[4]=33; // último elemento del array numeros[5]=6; // fuera de rango: excepción! Acceso a los elementos del array (2) • Se pueden utilizar los elementos del array como simples variables: – notas[0] = notas[1] + 3; – System.out.println( alumnos[3].length() ); • Ejemplos: Cadenas1.java Suma.java Hola1.java Hola2.java 9 Acceso a los elementos del array (3) • La variable length asociada a un array da el tamaño máximo del array, no su tamaño actual. • Ejemplo: Cadenas2.java Doubles1.java Cadenas3.java Doubles2.java 10 Ejercicios • Escribir programas para: – Decir para cada número de un array de enteros si es par o impar. – Imprimir un array de números en orden inverso. – Decir cual es el número más grande de un array de números. 11 Propiedades de los arrays • Un array es una estructura estática: su tamaño no puede cambiar. No podemos reducirlo si ya no queremos un elemento o aumentarlo si queremos más elementos. • Los elementos son del mismo tipo, básico o de objeto. • Java proporciona la clase ArrayList, que define un array dinámico (próxima clase). • Su tamaño es variable. • Puede contener cualquier tipo de objeto. 12 Argumentos de entrada de un método (1) • Al llamar a un método con sus argumentos de entrada, se copia el valor de estos argumentos, y son estas copias que se pasan al método y que se trabajan dentro del método. • Ejemplo: Increment.java • Al salir del método, los argumentos conservan su valor original, aunque se hayan modificado dentro del método. 13 Argumentos de entrada de un método (2) • Cuando los argumentos son de tipo objeto, se pasa la copia del valor también, pero a diferencia de los argumentos de tipo básico, esta copia no es la copia del objeto sino la copia de la referencia. • Ejemplo: Alumnos.java con Alumno.java • Al salir del método, los argumentos conservan su valor original que es la referencia, pero el objeto modificado dentro del método sigue modificado! • ...Un array es un objeto... 14 Recursos adicionales • Brad Kjell (Lecture Notes on Java 5.0 Programming. Part 9. En particular los capitulos 46, 47, 48) – http://chortle.ccsu.edu/java5/index.html 15