miércoles, 20 de agosto de 2014

Arrays y variables locales

Comportamiento de los objetos en un Array


Volviendo nuevamente con los Arrays voy a estudiar como se comporta un Array formado por objetos.
Se comportan como cualquier otro objeto (valga la redundancia), la única diferencia es el acceso a dichos objetos.

// Ejemplo
//Declaramos un array que contenga 7 referencias Perro.

Perro [] mascota;
mascota = new Perro [7];

// Creamos dos nuevos objetos Perro y le asignamos los dos primeros elementos del array

mascota [0] = new Perro ();
mascota [1] = new Perro ();

// Podemos llamar los métodos de los objetos creados;

mascota [0]. setAltura (30); //Suponemos que ya hemos definido los getters y setters
int x = mascota [0]. getAltura ();
mascota [1]. setAltura (8);
...

lógicamente, en los espacios de array en los que no hayamos introducido nada no podremos llamar ningún método (lógico, si no hemos metido nada).
mascota [4].setAltura (8)... No funcionará porque no hemos metido un "new Perro()" ahí.

Valores por defecto

Ya sabemos que una variable necesita al menos un nombre y un tipo y que podemos inicializarla al mismo tiempo que la declaramos.

int altura = 30;

Pero cuando NO inicializamos una variable (no le asignamos un valor) ¿que ocurre cuando llamamos un método getter?. En otras palabras, ¿Cuál es el valor de las variables antes de iniciarlas?

Antes que nada hay que saber que diferenciar 2 tipos de variables. Las "Instance variables" y las "Local variables" .

Instance variables: Son las que hemos visto hasta ahora, las que declaramos antes de comenzar a definir los métodos.
Local variables: Son las que están declaradas e inicializadas al mismo tiempo dentro de un método, es decir... 

Ejemplo de Instance variable:


 

Ejemplo de Local variable:



Es interesante resaltar que la variable (y) y la variable (z) deben ser declaradas he inicializadas antes del método (fuera del método)

La razón por la cual diferencio entre estos dos tipos de variables es porque la primera (Instance variable) se carga al mismo tiempo que el programa comienza a ejecutarse (vamos, que desde que abrimos el programa estas variables YA TIENEN UN VALOR, aunque no se lo hayamos puesto nosotros. Mientras que para las variables Locales, no ocurre esto. Si en lugar del código anterior, hubiéramos puesto esto:



Vemos como la variable localVariable no está inicializada, por tanto no podemos mostrarla en la consola. Esto ocurre porque cuando java "arranca" un código, "carga" por decirlo así, todas las clases pero NO carga los métodos hasta que sean "llamados" por alguna linea de código. De ahí que las variables que van dentro de un método no tengan un valor predeterminado como lo tienen las instanciadas.

Como he dicho, para las "instance variable" no ocurre así. Los valores que le da java a las diferentes variables según su tipo es el siguiente.

integers = 0 
floating points = 0.0 
booleans = false 
references = null 

No hay comentarios:

Publicar un comentario