martes, 29 de abril de 2008

La asignacion de objetos

La asignacion de objetos en java tiene una gran observacion que hay que tener en cuenta , este tema muy sencillo puede crear un gran problema al momento de programar

veamos el siguiente ejemplo.

/////////////////////// primera clase //////////////////////
public class numero {

public int i;

public numero() {
}
}

//////////////////////////////////////////////////////////


// la asignacion de tipos primitivos es muy sencilla puesto y directa ,
// dado que alberga el valor actual y no se utiliza referencias de objetos ,
// cuando se asignan primitivos se copian los contenidos de un sitio a otro.

public class asignacion {

public asignacion() {
}

public static void main(String[] jorge){

numero n1=new numero();
numero n2=new numero();

n1.i=1;
n2.i=2;
System.out.println("n1.i :"+n1.i+", n2.i:"+n2.i);

n1=n2;
// no se copian los valores , sino las referencias del objeto

System.out.println("n1.i :"+n1.i+", n2.i:"+n2.i);

n1.i=27;

//en este momento realmente estamos modificando el n2
// puesto que la referencia de n1 se perdio y apunta a n2

System.out.println("n1.i :"+n1.i+", n2.i:"+n2.i);
// supuestamente tendria que salir
//n1.i: 27 , n2.i:2
// pero sorpresa

}
}


Salida :

n1.i :1, n2.i:2
n1.i :2, n2.i:2
n1.i :27, n2.i:27

bueno si no soy muy claro , pueden hacer un seguimiento del ejemplo y solos se daran cuenta del problema de asignacion

No hay comentarios: