viernes, 18 de octubre de 2013

Cómo se definen e inicializan las variables

Una variable se define especificando el tipo y el nombre de dicha variable. Estas variables pueden ser tanto de tipos primitivos como referencias a objetos de alguna clase perteneciente al API de Java o generada por el usuario. Si no se especifica un valor en su declaración, las variable primitivas se inicializan a cero (salvo boolean y char. que se inicializan a false y '\0'). Análogamente las variables de tipo referencia son inicializadas por defecto a un valor especial: nuil. Es importante distinguir entre la referencia a un objeto y el objeto mismo. Una referencia es una variable que indica dónde está guardado un objeto en la memoria del ordenador (a diferencia de C/C++. Java no permite acceder al valor de la dilección, pues en este lenguaje se han eliminado los punteros). Al declarar una referencia todavía no se encuentra "apuntando*' a ningún objeto en particular (salvo que se cree explícitamente un nuevo objeto en la declaración), y por eso se le asigna el valor nuil. Si se desea que esta referencia apunte a un nuevo objeto es necesario crear el objeto utilizando el operador new. Este operador reserva en la memoria del ordenador espacio para ese objeto (variables y funciones). También es posible igualar la referencia declarada a otra referencia a un objeto existente previamente. 
Un tipo particular de referencias son los arrays o vectores, sean éstos de variables primitivas (por ejemplo, un vector de enteros) o de objetos. En la declaración de una referencia de tipo array hay que incluir los corchetes []. En los siguientes ejemplos aparece cómo crear un vector de 10 números enteros y cómo crear un vector de elementos MyClass. Java garantiza que los elementos del vector son inicializados a nuil o a cero (según el tipo de dato) en caso de no indicar otro valor.

Ejemplos de declaración e inicialización de variables:
int x;            // Declaración de la variable primitiva x. Se inicializa a 0
int y = 5;        // Declaración de la variable primitiva y. Se inicializa a 5
MyClass unaRef;          // Declaración de una referencia a un objeto MyClass.
// Se inicializa a nuil
unaRef = new MyClass();     // La referencia "apunta" al nuevo objeto creado
// Se ha utilizado el constructor por defecto
MyClass segundaRef = unaRef; // Declaración de una referencia a un objeto MyClass.
// Se inicializa al mismo valor que unaRef
int [] vector;       // Declaración de un array. Se inicializa a nuil
vector = new int[10]; // Vector de 10 enteros, inicializados a 0
double [] v = {1.0, 2.65, 3.1};// Declaración e inicialización de un vector de 3
// elementos con los valores entre llaves
MyClass [] lista=new MyClass[5];// Se crea un vector de 5 referencias a objetos
// Las 5 referencias son inicializadas a nuil
lista[0] = unaRef;          // Se asigna a lista[0] el mismo valor que unaRef
lista[l] = new MyClass(); // Se asigna a lista[l] la referencia al nuevo objeto
// El resto (lista [2] ...lista [4] siguen con valor nuil


En el ejemplo mostrado las referencias unaRef. segundaRef y lis ra[0] actuarán sobre el mismo objeto. Es equivalente utilizar cualquiera de las referencias ya que el objeto al que se refieren es el mismo.

No hay comentarios:

Publicar un comentario