+0

Qué son las Variables Primitivas y Objectos en Java 21

Duration: 4m 15s



Vamos a ver que es una variable primitiva y un objeto, y sus diferencias, en Java.

Explicación inicial

¿Recuerdas cuando el String solía escribirse con mayúscula? Vamos a desentrañarlo rápidamente, ¿vale?

Por ahora, comprendemos que una variable guarda un valor (texto, número, etc.), y eso es correcto para las variables primitivas, pero para los objetos es diferente.

Imaginemos una especie de tabla mental que represente un poco cómo funciona todo por dentro (como la ^^RAM^^):

int numero = 2;
String nombre = "Pol";
VariableValor
numero2
nombre0x00

Es cierto, nombre no es igual a Pol. Esto ocurre porque la variable numero es de tipo primitivo, mientras que nombre es un objeto. Déjame explicarlo con más detalle.

Variables primitivas

Las variables primitivas generalmente están en minúsculas, como int, boolean, etc. Cuando se les asigna un valor, este se guarda bajo el nombre de la variable, como se ha mostrado en la tabla anterior. Debes entender que ese nombre siempre corresponde a ese valor.

Objetos

Los objetos generalmente comienzan con mayúscula, como String o los primitivos en mayúsculas: Int, Boolean.

Estos tienen el valor que les asignamos. De hecho, he omitido una tabla. Permíteme mostrarte cómo funciona realmente:

VariableValor
numero2
nombre0x00
DirecciónObjeto
0x00"Pol"

Podemos ver que, en realidad, la variable nombre no guarda el valor, sino una dirección. Para acceder al objeto, necesitamos consultar la segunda tabla y encontrar el valor asociado a la dirección.

Es un poco complejo, pero ten en cuenta que más adelante esto será muy útil.

Diferencias entre variables primitivas y objetos

Ahora sí, estamos listos para ver la clara diferencia. Vamos a declarar 4 variables y a hacer sus tablas:

int a = 5;
int b = a;
Integer c = 10;
Integer d = c;
VariableValor
a5
b5
c0x00
d0x00
DirecciónObjeto
0x0010

Como se puede observar en la primera tabla, la asignación hace que b tenga el mismo valor que a, y d tenga la referencia del objeto de c.

a y b tienen su propio valor independiente. Si modificáramos a, b seguiría teniendo el valor 5.

c y d, en cambio, comparten valor, ya que la dirección asignada apunta al mismo objeto. Si ahora modificáramos c y cambiamos el valor a 15, d también tendría el valor de 15. Esto se debe a que hemos modificado el objeto en 0x00, pero no la dirección en c y d.

Ahora bien, si asignamos 0 a d, la historia cambia. Veámoslo en código y en las tablas:

d = 0;
VariableValor
a5
b5
c0x00
d0x01
DirecciónObjeto
0x0015
0x010

Puedes observar que, al asignarle otro valor, automáticamente se ha creado el objeto en la segunda tabla y se le ha asignado una dirección. Esto es lo bueno de Java. Has de saber cómo funciona a nivel de código, pero no tienes que preocuparte de nada, ya que el lenguaje de programación se encarga de todo.

Si no te ha quedado muy claro o no lo has terminado de entender, no te preocupes. A medida que avances en el curso, todo irá encajando.