0% encontró este documento útil (0 votos)
33 vistas10 páginas

Variables Java

Las variables en Java pueden ser de tipos elementales o de clases. Las variables de tipos elementales almacenan valores directamente, mientras que las variables de clases almacenan referencias a objetos que mantienen un estado interno. Aunque dos objetos puedan tener el mismo contenido, siempre se consideran diferentes si están almacenados en posiciones de memoria diferentes, por lo que su comparación mediante == siempre es falsa.

Cargado por

forglow321
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
33 vistas10 páginas

Variables Java

Las variables en Java pueden ser de tipos elementales o de clases. Las variables de tipos elementales almacenan valores directamente, mientras que las variables de clases almacenan referencias a objetos que mantienen un estado interno. Aunque dos objetos puedan tener el mismo contenido, siempre se consideran diferentes si están almacenados en posiciones de memoria diferentes, por lo que su comparación mediante == siempre es falsa.

Cargado por

forglow321
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Variables en Java (I)

Los principales aspectos que definen a una variable son:


 Nombre
 Alcance
 Tipo
 Elemental
 Clase

El tratamiento de una variable de un tipo clase es bastante


diferente al que reciben las variables que contienen valores de tipos
elementales.
Un tipo elemental determina un conjunto de valores y un
conjunto de operaciones que se aplican sobre estos valores.
En ejecución, una variable de un tipo elemental mantiene un
valor que corresponde al tipo y participa en las operaciones
establecidas por su tipo.
El programador no conoce la representación interna de cada
valor ni el código de las operaciones, es un cliente de un tipo cuya
implementación esta encapsulada.
Variables en Java (II)
Una variable de tipo clase está asociada a un objeto. Un objeto
es una abstracción de una entidad identificada durante la etapa de
análisis.

El objeto tiene asociado un estado interno determinado por el


estado de los atributos en un momento determinado.

El objeto puede ejecutar algunas operaciones en respuesta a los


mensajes que recibe.

Como consecuencia de esta diferencia conceptual podemos


identificar dos diferencias concretas entre una variable asociada a un
objeto y una variable que contiene valores de un tipo elemental:

 Declaración

 Modificación
Variables en Java (III)
Una variable de un tipo elemental se declara mediante una
instrucción como:
int i = 1;
char ch ;
ch = ‘A’;

Cuando se ejecuten estas instrucciones se reservan espacios de


memoria y se asignan directamente lo valores especificados. Una nueva
asignación modifica el valor almacenado:
i = i * j;

Una variable de un tipo clase se declara mediante una instrucción:


Ciudad ciu;

Una vez declarada la variable es posible crear un objeto ligado a la


variable, siendo el objeto es una instancia de la clase Ciudad:
ciu = new Ciudad(8000);
Variables en Java (IV)
La creación (emplear new con el correspondiente constructor)
reserva espacio de almacenamiento en memoria para mantener el
estado interno del objeto.

Del mismo modo, la instrucción ciu = new Ciudad(8000);


provoca se ha visto tres efectos:

 Ocupa memoria para mantener el estado interno del objeto de


acuerdo a la estructura determinada por la clase Ciudad.

 Invoca al constructor de la clase para inicializar el estado interno


mantenido en los atributos de instancia.

 Liga el objeto creado a la variable ciu.


Variables en Java (V)
Una variable de un tipo elemental recibe valores a través de
asignaciones.

Una variable de un tipo clase está asociada a un objeto con un


estado interno mantenido en variables de instancias.

La representación interna de una variable en memoria es muy


diferente según dicha variable esté asociada a un valor de un tipo
elemental o a un objeto de una clase.

Una variable de un tipo elemental puede aparecer en cualquier


expresión en la que se apliquen operadores con los cuales este tipo sea
compatible.

Una variable de un tipo clase puede usarse para enviar un


mensaje al objeto, en respuesta a este mensaje el objeto ejecutará un
método determinado por la clase a la que pertenece. Ejemplo:
if (ciu.densidad() > 0)
Variables en Java (VI)
Ciudad ciu1,ciu2;
ciu1=new Ciudad(7560,2300,45.5);
ciu2=new Ciudad(7560,2300,45.5);
if (ciu1 == ciu2)
Falso

codigoPostal 7560 codigoPostal 7560


ciu1 poblacion 2300 ciu2 poblacion 2300
superficie 45,5 superficie 45,5

Los valores de las variables son referencias, por lo que la


comparación se realiza en base a dichas referencias.

Puesto que objetos diferentes (pudiendo tener contenidos


iguales o no) están alojados en posiciones de memoria diferente, la
comparación de los mismos siempre proporciona una desigualdad como
resultado de su comparación.
Variables en Java (VII)
Es importante distinguir entre el nombre de un objeto, el
objeto mismo y el objeto del problema que representa.

Un mismo objeto puede tener dos nombres diferentes y


también es posible que dos objetos diferentes, con diferentes nombres,
representen a un mismo objeto del problema. Bajo estas circunstancias,
¿cómo decidimos si dos objetos son iguales?

Ciudad ciu1,ciu2;
ciu1=new Ciudad(7560,2300,45.5);
ciu2=ciu1;
if (ciu1 == ciu2)
Verdadero

ciu1 codigoPostal 7560


poblacion 2300
ciu2
superficie 45,5
Variables en Java (VIII)
Ejemplo de dos objetos con el mismo estado interno:

codigoPostal 7560 codigoPostal 7560


ciu1 poblacion 2300 ciu2 poblacion 2300
superficie 45,5 superficie 45,5

Ejemplo de un mismo objeto referenciado por dos variables:

ciu1 codigoPostal 7560


poblacion 2300
ciu2
superficie 45,5
Variables en Java (IX)
Ciudad ciu1,ciu2;
ciu1=new Ciudad(7560,2300,45.5);
ciu2=ciu1;
ciu1.aumentarPoblacion (120);
if (ciu1 == ciu2)
Verdadero

ciu1 codigoPostal 7560


poblacion 2420
ciu2
superficie 45,5

ciu1 y ciu2 tienen la misma identidad porque referencian a un mismo


objeto.
Variables en Java (X)
private int codigoPostal;
private int poblacion;
private float superficie;

public boolean equals (Ciudad otra)


{
return codigoPostal==otra.obtenerCodigoPostal()
&& poblacion==otra.obtenerPoblacion()&&
superficie == otra.obtenerSuperficie();
}

Ciudad ciu1,ciu2;
ciu1=new Ciudad(7560,2300,45.5);
ciu2=new Ciudad(7560,2300,45.5);
if (ciu1.equals(ciu2))
Verdadero

También podría gustarte