martes, 27 de junio de 2017

Estructuras de almacenamiento (Arrays)


¿Qué es un arrays?

Un array es una estructura de datos que nos permite almacenar una gran cantidad de datos de un mismo tipo. El tamaño de los arrays se declara en un primer momento y no puede cambiar en tiempo de ejecución como puede producirse en otros lenguajes.

Arrays en java
Java proporciona una estructura de almacenamiento denominada array que permite almacenar muchos objetos de la misma clase e identificarlos con el mismo nombre.

La declaración de un array tiene la siguiente sintaxis:
tipo-o-clase[] identificador-array;
                      o
tipo-o-clase identificador-array[];

Por ejemplo, un array de números enteros se puede declarar de dos
formas:
int[] numeros;
          o
int numeros[];

Ambas declaraciones son equivalentes, el tipo base del array es int y el nombre del array es numeros. Todos los elementos de la estructura numeros[] almacenan un int. La primera declaración define un array de objetos de tipo primitivo int con identificador numeros. La segunda declaración dice que cada elemento de la forma numeros[] es de tipo int.

Ejemplos de declaraciones de arrays:
int[] numerosEnteros; // array de tipo int
double[] numerosReales; // array de tipo double
String[] nombres; // array de tipo String
Object[] objetos; // array de la clase Object
Autos[] auto; // array de la clase auto

Se denomina tipo base del array al tipo que se declara para sus elementos.

Este tipo base puede ser un tipo primitivo de Java, un objeto o una clase definida. En los ejemplos anteriores se han utilizado tipos primitivos y clases como tipo base. El array numerosEnteros almacena objetos del primitivo int. El array nombres almacena objetos de la clase String. El array objetos almacena referencias a instancias de la clase Object de
Java. El array auto almacena objetos de la clase Autos.
Además de declarar un array es necesario indicar el número de elementos que va a almacenar. Un array es un objeto y como cualquier objeto de un programa Java, su valor inicial es null. Antes de hacer referencia a los elementos del array es necesario instanciar el objeto.

Cuando se instancia un objeto array se asigna un espacio de memoria para almacenar los elementos del array. Para esto es necesario saber el número total de elementos que va a almacenar.

La instanciación de un objeto array se hace de la siguiente forma:
nombres = new String[100];
auto= new Autos[50];

En este ejemplo, el array nombres tiene capacidad para almacenar hasta
100 objetos de tipo String. El array auto puede almacenar hasta 50 objetos de la clase Autos.
Cuando se crea un array se inicializa el valor de todos sus elementos al valor por defecto del tipo base del array: cero para los números, false para los boolean, para los caracteres y null para las referencias a objetos.

De forma similar al resto de objetos de Java, un array se puede inicializar al momento de la declaración. En este caso se inicializa al valor por defecto del tipo del array.

int[] numerosEnteros = new int[10];
String[] nombres = new String[100];
Autos [] auto = new Autos[50];


Por ejemplo, el array notas almacena 5 números enteros.-
La declaración del array:



int[] notas = {4, 9, 7, 5, 10};

El primer elemento del array se almacena en la posición 0 y el último en la posición 4, que equivale a su tamaño menos 1. El atributo length almacena el tamaño de un array. En este ejemplo, la última posición del array es notas.length – 1.
Este arrray notas almacena 5 calificaciones, notas[0] es el primer elemento del array y notas[4] el último. Para mostrar las calificaciones almacenadas en el array, se puede utilizar un for con una variable deVcontrol que vaya de cero hasta la longitud del array menos 1.

for (int i=0; i<=notas.length - 1; i++)
System.out.println("notas[" + i + "] es " +
notas[i]);

La salida por la consola:

notas[0] es 4
notas[1] es 9
notas[2] es 7
notas[3] es 5
notas[4] es 10

El siguiente for es equivalente al anterior. En vez de definir el límite de la variable de control menor o igual a notas.length–1, se hace estrictamente menor que notas.length.

for (int i=0; i<notas.length; i++)
System.out.println("notas[" + i + "] es " +
notas[i]);

El atributo length de un array almacena un valor numérico que se puedeVconsultar pero no se puede modificar. Es una buena práctica de programación utilizar el atributo length para hacer referencia al tamaño de un array.

Otra forma de mostrar los valores almacenados en un array es utilizando un for “para todo”, donde la variable de control del for, con identificador nota, toma el valor de todos los elementos de la estructura de almacenamiento, en este caso, el array notas.

for (int nota : notas)
System.out.println(nota);

La variable nota del for “para todo” toma los valores nota[0], nota[1],nota[2], nota[3] nota[4] y nota[5] en cada iteración. Cuando se utiliza un for “para todo” no hace falta indicar los límites de la variable de control del for, basta que esta variable sea del tipo almacenado en el array. En este ejemplo nota es de tipo int.

La salida por la consola:
4
9
7
5
10

Ejemplo de "diasTrabajo"-
Un array también se puede inicializar indicando la lista de valores que va almacenar:
String[] diasTrabajo = {"Lunes",
"Martes",
"Miércoles",
"Jueves",
"Viernes"
“Sábado”;

int[] enteros = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,11};

El array diasTrabajo almacena 6 objetos de tipo String con los nombres de los días laborables de la semana. El array enteros almacena 12 números enteros con valores de 0 a 11.

Para hacer referencia a cada elemento de un array es necesario indicar la posición que ocupa en la estructura de almacenamiento. Esta posición se denomina índice. El primer elemento de un array se almacena en la posición cero y el último elemento en la posición n-1, donde n es el tamaño del array.

El array diasTrabajo almacena los nombres de los días laborables de la semana.-
La declaración del array:


String[]diasTrabajo = {"Lunes",
"Martes",
"Miércoles",
"Jueves",
"Viernes"
“Sábado”};

De nuevo, se utiliza un for “para todo” para mostrar el contenido del array
diasTrabajo que almacena objetos de tipo String.

for (String dia: diasTrabajo)
System.out.println(dia);

La variable dia del for “para todo” es de tipo String y toma los valores
diasTrabajo [0]diasTrabajo [1]diasTrabajo [2],
diasTrabajo [3], diasTrabajo [4] y diasTrabajo [5]  en cada iteración.

La salida por consola:
Lunes
Martes
Miércoles
Jueves
Viernes
Sábado