• Jueves 14 de Noviembre de 2024, 07:55

Autor Tema:  Eliminar Objetos  (Leído 1955 veces)

alemag

  • Miembro MUY activo
  • ***
  • Mensajes: 180
    • Ver Perfil
Eliminar Objetos
« en: Viernes 15 de Diciembre de 2006, 15:31 »
0
Saludos compañeros, tengo el siguiente codigo:
Boolean b=new Boolean(true);
b=new Boolean (false);

pero lo que no tengo claro es si se crea otro objeto nuevo b, y el anterior queda en memoria, con lo que al no ser eliminado, se ralentizaria mucho los tiempos de ejecución (en mi aplicación se realizan muchas veces operaciones de este tipo).
Gracias.

robertogt

  • Miembro activo
  • **
  • Mensajes: 97
  • Nacionalidad: gt
    • Ver Perfil
    • http://robertux.wordpress.com
Re: Eliminar Objetos
« Respuesta #1 en: Viernes 15 de Diciembre de 2006, 22:14 »
0
Para asignarle un valor a una variable booleana no es necesario hacerlo de esa forma.

con que hagás
Código: Text
  1. b=true;
  2.  
  3.  

es suficiente.

emmmm, no estoy seguro, pero a mi parecer si quedara un objeto en memoria este sería eliminado por el garbageColector
Un dia sin sol es como, ya sabes, ... noche

chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: Eliminar Objetos
« Respuesta #2 en: Sábado 16 de Diciembre de 2006, 18:11 »
0
Cuando haces el Boolean b = new Boolean(true), estas creando un nuevo objeto Boolean en el heap (el lugar donde van a parar todo lo que creas con "new", que en java es controlado por el garbage collector)...

Como dijiste que estas creando varias veces estos valores, te conviene usar el tipo primitivo de dato "boolean b = true" en vez de crear objetos Boolean. La diferencia es que como boolean es un tipo primitivo de dato, se guardara en el stack su valor y su posicion, sin necesitar una referencia al lugar de memoria donde esta guardada esta variable, por lo que es mucho mas eficiente.

robertogt

  • Miembro activo
  • **
  • Mensajes: 97
  • Nacionalidad: gt
    • Ver Perfil
    • http://robertux.wordpress.com
Re: Eliminar Objetos
« Respuesta #3 en: Sábado 16 de Diciembre de 2006, 20:42 »
0
:P  :P  :P tenés razon chimps, no me di cuenta que estaba usando la clase Boolean, por eso se me hacia raro que utilizaba un constructor.

Si, es diferente usar Boolean y boolean, el primero es una clase y el segundo un tipo primitivo.
Un dia sin sol es como, ya sabes, ... noche

alemag

  • Miembro MUY activo
  • ***
  • Mensajes: 180
    • Ver Perfil
Re: Eliminar Objetos
« Respuesta #4 en: Lunes 18 de Diciembre de 2006, 06:47 »
0
Sí, quiero usar un tipo de dato Boolean para poder cambiar el valor del objeto, pero si tengo el siguiente codigo, no me lo cambia:

public void cambia(Boolean B)
{
a=new Boolean(false);
}

public class Hola ()
{
vble=new Boolean(true);
cambia(vble);
}

¿Por qué puede ser?
Gracias.

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Eliminar Objetos
« Respuesta #5 en: Lunes 18 de Diciembre de 2006, 10:33 »
0
Hola...

Citar
public void cambia(Boolean b ){
a=new Boolean(false);
}

public class Hola ()
{
vble=new Boolean(true);
cambia(vble);
}

A lo mejor es por eso, ¿no crees? ;)


Un saludo.






Silverfox

alemag

  • Miembro MUY activo
  • ***
  • Mensajes: 180
    • Ver Perfil
Re: Eliminar Objetos
« Respuesta #6 en: Martes 19 de Diciembre de 2006, 05:57 »
0
Pues la verdad que no, lo tengo bien puesto, si no daría un error de compilación. Pero no me cambia el valor.

silverfox

  • Miembro MUY activo
  • ***
  • Mensajes: 280
    • Ver Perfil
Re: Eliminar Objetos
« Respuesta #7 en: Jueves 21 de Diciembre de 2006, 10:29 »
0
Hola...

Citar
Pues la verdad que no, lo tengo bien puesto, si no daría un error de compilación. Pero no me cambia el valor.

Jejeje, ya me imaginaba...

Prueba cambiando el método cambia a

Boolean cambia (Boolean);

y ejecútalo con b= cambia(B);

Ten en cuenta que tu problema tiene que ver con la forma de paso de los parámetros por la pila de llamadas.


Un saludo.




Silverfox