En general se utiliza mucho para el famoso set o usus parecidos.
1.- referencia al objeto actual
public class referencia {
int i=0;
public referencia incrementar(){
i++;
return this; // hace referencia del mismo objeto
}
public void print(){
System.out.println("referencia :"+i);
}
public static void main(String[] arg){
referencia r=new referencia();
r.incrementar().incrementar().incrementar().incrementar();
r.print();
}
}
------------------------------------------------------------------------
2.- LLamadas de un contructor a otro
public class ejemplo {
public ejemplo()
{
this("hola");
}
public ejemplo(String palabra) //sobrecarga de contructor
{
System.out.println("salida : "+palabra);
}
}
public class llamada {
public static void main(String[] arg){
new ejemplo();
}
}
salida : hola
miércoles, 30 de abril de 2008
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
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
lunes, 28 de abril de 2008
Campeonato JAVACUP
Suscribirse a:
Entradas (Atom)