Hola! Como ya sabemos, una variable es un espacio en memoria, y a ese espacio se le puede asignar un valor.

En una asignación entre dos variables, el lenguaje realiza diferentes acciones al manipular las variables del lado izquierdo y el derecho de la sentencia. Con respecto al lado izquierdo se utiliza el nombre de la variable para acceder a la celda de la memoria que éste referencia, con el objetivo de almacenar el dato obtenido desde el lado derecho. La variable del lado derecho debe sufrir una extracción de valor.

int a = 14;
int b = 10;

a = b;
b++;

System.out.print("a: "+a + "\nb: "+b);

// resultado
// a: 10
// b: 11

ASIGNACIONES POR COPIA

Sobre la variable del lado derecho de la sentencia se realiza una extracción del valor almacenado en la celda de memoria. Luego, este valor es copiado en la celda de memoria correspondiente a la variable del lado izquierdo de la sentencia. El caso anterior ejemplifica lo aquí explicado.

ASIGNACIONES POR REFERENCIA

Sobre la variable del lado derecho de la sentencia se realiza una extracción de la dirección de memoria (referencia) donde se encuentra almacenado su valor. Luego, este valor de dirección es copiado en la referencia correspondiente a la variable del lado izquierdo de la sentencia.

En este tipo de asignación ambos nombres de variables referencian a la misma dirección de memoria y, por ende, al mismo dato. Cualquier cambio a ser realizado a este dato puede efectuarse por medio de cualquiera de los dos nombres.

NOTA: En Java no existe el paso por referencia. El paso por valor (o por copia como algunos llaman) es obligatorio.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *