| Usuario |
declaración de variables en java |
Desconocido
|
| Enviado - 11/10/2004 |
| |
| Tengo una duda. Aunque se que se pueden declarar variables en cualquier lugar de un código fuente en Java, La pregunta es: declaración de variables dentro de un loop hace más lento la ejecución del código? esto por lo de la reserva y liberación de memoria.... Alguien me puede explicar?? Gracias |
| |
|
cherlux
2 Mensaje(s)
|
| Enviado - 29/10/2004 |
| |
Empezemos por partes.
En POO NO SON VARIABLES, para empezar vamos a hablar con propiedad. Son ATRIBUTOS y no es que puedas declararlos s como loco en cualquier parte. Recuerda que los atributos son la parte que describe al objeto. Por ejemplo, una figura geometrica se describe por su numero de lados. entonces su atributo seria nLados. Este atributo es global, es decir, cualquier metodo del objeto puede "alcanzarlo". Ahora, tienes atributos de un metodo. Estos solo los "ve" el bloque del metodo. Y al terminar este en algun momento seran recogidas por el garbage collector (Algo que por cierto en c++ tienes que hacerlo TU! Dios Bendiga a JAVA :D )
Ahora. Si declaras un metodo en un loop NO SE CREAN CADA VES QUE SE COMPLETA UNA VUELTA!!!¿por que? Pues simplemente por que la JVM tiene BIEN CONTROLADOS LOS OBJETOS, asi que cuando es digamos la segunda pasada, se da cuenta que ya tiene reservado espacio para ese atributo y lo pasa de largo. Sin embargo, cuando usas el operador new pueden pasar dos cosas. Creas un nuevo objeto o una nueva referenicia al mismo objeto. Esto es muy util, cuando por ejemplo quieres crear varios objetos. P.E.
for ( int i = 3; i < 10; i++ )
figuras[i] = new figura(i);
Con este sencillo ciclo, podrias crear 7 figuras, del triangulo al poligono de 9 lados
Espero haber resuelto tu duda.
Atte.
"Hasta la victoria siempre
Patria o Muerte
VENCEREMOS!!!"
CherLUX |
| |
|
Desconocido
|
| Enviado - 29/10/2004 |
| |
en realidad no me queda muy claro....
Hay alguna diferencia en cuanto a desempeño de estos dos trosos de código?, porque?
1.
Objeto obj;
for (i=1;1<10; i++)
{
obj = new Objeto();
}
2.
for (i=1;1<10; i++)
{
Objeto obj = new Objeto();
}
Gracias. |
| |
|
|
|