SoloCodigo
Programación General => Java => Mensaje iniciado por: alemag en Viernes 15 de Diciembre de 2006, 15:31
-
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.
-
Para asignarle un valor a una variable booleana no es necesario hacerlo de esa forma.
con que hagás
es suficiente.
emmmm, no estoy seguro, pero a mi parecer si quedara un objeto en memoria este sería eliminado por el garbageColector
-
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.
-
: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.
-
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.
-
Hola...
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
-
Pues la verdad que no, lo tengo bien puesto, si no daría un error de compilación. Pero no me cambia el valor.
-
Hola...
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