RE:pasar parametro por valor o referencia
En java "dicen" que no hay punteros. En realidad en java casi todo son punteros. Lo que no hay son * ni & como en C
En java no puedes decidir si pasas un parametro por valor o por referencia. Los tipos simples (int, double, char, etc) se pasan por valor
void metodo (int a)
{
// a es copia del entero que me pasen de fuera. Si cambio a, el de fuera no se entera.
}
Todos los objetos se pasan por referencia
void metodo (Clase a)
{
// la a es la misma intancia que me pasen desde fuera. Si cambio cosas dentro de a, fuera también cambia.
}
Sin embargo, en este último caso, aunque el objeto es el mismo dentro y fuera del metodo, la a en si se esta pasando por valor. Con eso quiero decir que si dentro del metodo hago que a "apunte" a otro objeto, fuera no nos vamos a enterar
void metodo (Clase a)
{
a = new Clase();
}
Clase b = new Clase();
metodo (b);
// Aqui b sigue con el mismo valor antes y después de llamar al método.
No se si me he explicado ...
Sed buenos.