Tema – 9Tipos de datos estructurados
9.1. Introducción
• En este tema veremos algunos de los mecanismos que Java ofrece para la creación de tipos de datos compuestos. Éstos se construyen, en un principio, a partir de los tipos de datos elementales predefinidos por el lenguaje.– Arrays (vectores)
– Matrices
– Cadenas de caracteres, o strings
PROGRAMACIÓN – Daniel Santiago 2
9.2. Arrays
• Un array es una colección de datos del mismo tipo, referenciados mediante un mismo nombre, y almacenados en posiciones de memoria contiguas, de forma que, la dirección de memoria más baja corresponde a la del primer elemento del array, y la dirección de memoria más alta corresponde a la del último elemento.
PROGRAMACIÓN – Daniel Santiago 3
9.2. Arrays
• Declaración:tipo_de_datos [] nombre_array = new tipo_de_datos
[tamaño];
– tipo_de_datos indica el tipo de los datos almacenados en el array (int, char, float…).
– []: son los caracteres propios de la declaración de un array. Sin ellos, se declararía una variable simple del tipo indicado anteriormente.
– nombre_array es el identificador que usaremos para referirnos al array, así como a cada uno de sus elementos.
– tamaño: indica el número de datos que contendrá el array.
PROGRAMACIÓN – Daniel Santiago 4
9.2. Arrays
• Representación gráfica de un array:
– Ejemplo: int [] edades = new int [10];
Posiciones del array
Contenido del array
PROGRAMACIÓN – Daniel Santiago 5
0 1 2 3 4 5 6 7 8 9
15 16 24 14 28 54 38 53 23 3
9.2. Arrays
• Consulta:
– Para acceder al contenido de una posición concreta del array, utilizamos la siguiente notación:
nombre_array[índice];
• El índice representa la posición que ocupa un elemento dentro del array y se especifica mediante una expresión entera.
PROGRAMACIÓN – Daniel Santiago 6
9.2. Arrays
• Consulta:
– Ejemplo:
int [] edades = new int [10];
int i, valor;
valor = edades[1]; //Accedemos a la posición 1 del array
valor = edades[i]; //Accedemos a la posición ‘i’ del array
//El valor de la variable ‘i’ debe estar //comprendido entre 0 y 9.
PROGRAMACIÓN – Daniel Santiago 7
9.2. Arrays
• Asignación:– La asignación de valores a los elementos de un
array se realiza de forma similar a como se consultan.
– Ejemplo:int [] edades = new int [10];
edades[0] = 15;
edades[1] = 16;
…
edades[9] = 3;
PROGRAMACIÓN – Daniel Santiago 8
9.2. Arrays
• Java permite realizar la declaración y la asignación de forma simultánea.
• Ejemplo:
int [] edades = {10, 64, 51, 82, 43};
/*En este caso se crea un array de 5 posiciones. No hace falta indicarle el tamaño directamente, sino que se hace al escribir los valores que conforman el array*/
PROGRAMACIÓN – Daniel Santiago 9
9.2. Arrays
• Podemos saber el tamaño de un arrayutilizando la función length que proporciona Java.
• Ejemplo:
int [] edades = new int [10];
System.out.println(“El tamaño del array es“ + edades.length);
//La línea anterior imprimirá por pantalla 10
PROGRAMACIÓN – Daniel Santiago 10
9.3. Matrices
• Las matrices son arrays con dos dimensiones. Por lo tanto, las operaciones de declaración, acceso, inicialización, etc. son similares a las de los arrays.
PROGRAMACIÓN – Daniel Santiago 11
9.3. Matrices
• Declaración:tipo_de_datos [tam1][tam2] nombre_matriz = new
tipo_de_datos [tam1][tam2];
– tipo_de_datos indica el tipo de los datos almacenados en la matriz(int, char, float…).
– nombre_matriz es el identificador que usaremos para referirnos a la matriz, así como a cada uno de sus elementos.
– tam1 indica el número de filas de la matriz.
– tam2 indica el número de columnas de la matriz.
PROGRAMACIÓN – Daniel Santiago 12
9.3. Matrices
• Representación gráfica de una matriz:
– Ejemplo: int [][] matriz = new int [N][M];
PROGRAMACIÓN – Daniel Santiago 13
9.3. Matrices
• Consulta:
– Para acceder al contenido de una posición concreta de la matriz, utilizamos la siguiente notación:
nombre_matriz[índice1][índice2];
• Usamos dos índices, uno para cada dimensión. El primero representa la fila y el segundo la columna en que se encuentra dicho elemento.
PROGRAMACIÓN – Daniel Santiago 14
9.3. Matrices
• Consulta:– Ejemplo:
int [][] matriz = new int [5][10];
int i, j, valor;
valor = matriz[0][0]; //Accedemos a la primera posición //de la matriz
valor = matriz[i][j]; //Accedemos a la posición ‘i,j’ de la //matriz. El valor de la variable ‘i’ //debe estar comprendido entre 0 y 4.
//El valor de la variable ‘j’ debe estar //comprendido entre 0 y 10
PROGRAMACIÓN – Daniel Santiago 15
9.3. Matrices
• Asignación:– La asignación de valores a los elementos de una
matriz se realiza de forma similar a como se consultan.
– Ejemplo:int [][] matriz = new int [5][10];
matriz[0][0] = 15;
matriz [0][1] = 16;
…
matriz[4][9] = 3;
PROGRAMACIÓN – Daniel Santiago 16
9.3. Matrices
• Asignación:– Podemos asignar valores a una matriz, como con los
arrays, recorriendo secuencialmente todos sus elementos utilizando dos bucle, cada uno con una variable índice.
– Ejemplo:int [][] matriz = new int[5][10];int i, j; //Las variables i j son índices (filas y
//columnas)for(i=0; i< 5; i++)
for(j=0; j<10;j++)matriz[i][j] = 0; //Inicializamos todas las posiciones
//de la matriz con el valor 0
PROGRAMACIÓN – Daniel Santiago 17
9.3. Matrices
• Asignación:
– A continuación se muestra como inicializar la matriz en la propia declaración.
– Ejemplo:
int [][] matriz = {{24, 12, 6, 56},{17, 6, 15, 28}};
//Hemos creado una matriz de 2 filas y 4 columnas.
PROGRAMACIÓN – Daniel Santiago 18
9.4. Strings
• Los Strings, o cadenas de caracteres, son arrays de tipo carácter (char).
• La clase String forma parte del paquete "java.lang". En la API de JDK se puede encontrar la documentación detallada de esta clase.
PROGRAMACIÓN – Daniel Santiago 19
9.4. Strings
• Declaración:– Mediante el operador "new":
String s = new String("Esto es un string");
– Directamente sin el operador "new":String s = "Esto es una cadena de caracteres ";
• Es importante ver que el valor que asignamos a un String se pone entre comillas dobles (a diferencia de los caracteres simples, que se hace con comillas simples).
PROGRAMACIÓN – Daniel Santiago 20
9.4. Strings
• Otra forma de declaración es a través de un array de caracteres:
char letras[] = {‘H’, ‘o’, ‘l’, ‘a’};
String saludo = new String(letras);
• O leer del teclado:
String saludo = br.readLine();
PROGRAMACIÓN – Daniel Santiago 21
9.4. Strings
• La clase String incluye varios métodos, entre ellos podemos encontrar para:– Examinar los caracteres de la secuencia
individualmente.
– Comparar strings.
– Realizar búsquedas en strings.
– Extraer substrings.
– Crear una copia de un string.
– Cambiar mayúsculas por minúsculas y viceversa.
PROGRAMACIÓN – Daniel Santiago 22