2010-09-07 9 views
6

¿cuál es la diferencia entre pasar por referencia y llamar por referencia en java?¿cuál es la diferencia entre pasar por referencia y llamar por referencia?

+2

"Pass" y "Llamada" son cosas diferentes, no versiones diferentes de la misma cosa. ¿Quisiste decir "pasar por referencia" y "pasar por valor"? –

+2

@Jim Garrison - Aparentemente "Llamar por referencia" es un sinónimo de pasar por referencia, o eso dice [Wikipedia] (http://en.wikipedia.org/wiki/Evaluation_strategy#Call_by_reference). –

+0

@Richard - Si haces una respuesta, la votaré mejor. – StriplingWarrior

Respuesta

9

Java no pasa ninguna variable por referencia.

Es tentador pensar en objetos que se pasan por referencia en Java, pero nocivos. Las variables de tipo de objeto son referencias. Cuando pasa, se pasan por valor.

En otros idiomas, pasar por referencia y llamar por referencia son la misma cosa.

Editar: Se proporcionan más detalles en la cuestión stackoverflow existente "Is Java pass by reference?" (Spoiler: No.)

+0

¿No se pasan objetos por referencia? –

+1

Técnicamente se pasan por valor, pero su valor es una referencia. Si pasó un Object 'foo' en un método, y luego dijo 'foo = new Object()', la variable del método de llamada que se pasó al método permanecería sin cambios. – StriplingWarrior

+1

En java, todo se pasa por valor. pasar por valor pasar por valor Es correcto decir que las referencias de Java se pasan por valor. Esto significa que si tiene una referencia a un objeto, a, y pasa esa referencia a una llamada a un método, la referencia a se copia en b. Ahora b y un punto para el mismo objeto. – hvgotcodes

7

concepto importante - Java no tiene el concepto de "paso por referencia". Todo en Java se pasa por valor. Cuando pasas una referencia de objeto a un parámetro en una llamada de método, lo que realmente estás haciendo es pasar un valor que apunta a la referencia de tu objeto.

Los siguientes URL explicar esto con más detalle: http://www.javaworld.com/javaworld/javaqa/2000-05/03-qa-0526-pass.html y http://javadude.com/articles/passbyvalue.htm?repost

(como se señala en los comentarios a su pregunta) los términos "el paso por referencia" Al parecer, y "llamadas por referencia" significa la misma cosa.

Cuestiones relacionadas