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
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.
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
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
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
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[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