Programación General > Java

 Eliminar Objetos

(1/2) > >>

alemag:
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:
Para asignarle un valor a una variable booleana no es necesario hacerlo de esa forma.

con que hagás

--- Código: Text ---b=true;  
es suficiente.

emmmm, no estoy seguro, pero a mi parecer si quedara un objeto en memoria este sería eliminado por el garbageColector

chimps:
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:
: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.

alemag:
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.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa