Java - pasar parametro por valor o referencia

 
Vista:

pasar parametro por valor o referencia

Publicado por Fernando (13 intervenciones) el 19/04/2004 17:44:36
Quiero saber saber cual es la diferencia de pasar un valor de un parametro por valor o por referencia y en java como se usa.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:pasar parametro por valor o referencia

Publicado por Iñaky (1 intervención) el 19/04/2004 19:13:50
Cuando pasas un parámetro por valor lo que haces es que creas una copia de ese parámetro al invocar la función, y dentro de la función utilizas la copia del parámetro (por eso, aunque la modifiques dentro de la función invocada no se modifica en la función que hizo la invocación).

Cuando pasas un parámetro por referencia lo que le das a la función invocada es la dirección de memoria donde se encuentra ese parámetro. Por eso si lo modificas dentro de la función invocada se modifica en la invocante.

En Java se utiliza sólo el paso por referencia. (O al menos yo nunca lo he utilizado por valor) Si escribes

foo(objeto1);

int foo(Object o1)
{
}

estás pasando la dirección de memoria de objecto1
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar parametro por valor o referencia

Publicado por Oscar (661 intervenciones) el 20/04/2004 18:38:16
Java pasa los parametros por VALOR, Siempre!

http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html

Saludos
Oscar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar parametro por valor o referencia

Publicado por blackdead (23 intervenciones) el 19/04/2004 23:54:38
paso por valor consiste en trabajar con una copia de la variable, sin embargo en el trabajo por referencia, trabajas directamente con la direccion de memoria de la variable; esto es, cualquier cambio modifica al original.
En Java solo puedes trabajar por valor ya que java es un lenguaje orientado a Internet, y claro como vas a manejar punteros en Internet ¡¡¡seria inviable!!!.
Ademas Java carece de punteros, no se como Iñaki consigue trabajar con valores por referencia. No lo entiendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:pasar parametro por valor o referencia

Publicado por chuidiang (532 intervenciones) el 20/04/2004 09:45:42
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar