Ver Mensaje Individual
  #7 (permalink)  
Antiguo 11/12/2013, 18:07
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: pasar valores por referencia , variable u objeto

Hola,

Como indica Xerelo, son puro tecnicismos,

Cita:
Iniciado por rgf1987 Ver Mensaje
...
si pasas un objeto... y lo modificas en el método el objeto cambia en el main también
¿eso se entiende como paso por referencia?

¿Estoy equivocandome?
...
El objeto Prueba p no se está pasando por referencia???
No estás cambiando la referencia denominada p, estás cambiando el contenido de la referencia p, que es muy diferente. Por ejemplo:

Código:
p.setValor(5);

p = q;
Esas son dos cosas muy diferentes; la primera estás cambiando el valor de alguna variable interna de la referencia p, en el segundo caso estás cambiando la referencia.

Como en tu ejemplo no estás cambiando la referencia entonces se 'siente' como que pasara por referencia. Pero realmente estás pasando una copia de la referencia p. En el vínculo a la imagen con el gráfico que hice esta claramente el concepto.

Usando tu ejemplo:

Código Java:
Ver original
  1. public static void ref(Prueba p){
  2.         p.setNumero(555);
  3.      }

En ese caso p 'apunta' al objeto en el main que también se llama 'p' y que tiene el valor 5. Y solamente estás cambiando el contenido de ese 5 por un 555. Si modificamos un poco tu código se puede ver que p no es la 'misma' referencia. Sino que es otra y por lo tanto es una copia, osea 'pass by value'.

Código Java:
Ver original
  1. public static void ref(Prueba p){
  2.         p = new Prueba(); // P apunta a un nuevo objeto
  3.         p.setNumero(555);
  4.      }

Si se pasara por 'referencia' la variable, el viejo p del main apuntaría al nuevo objeto con el valor 555. Pero no es así, el p del main apunta al valor antiguo y nunca se modificó, por lo tanto no se pasó por referencia. El 'p' del parametro es una copia (por valor), aunque inicialmente 'apunta' al mismo objeto del main.

Saludos,

Última edición por HackmanC; 11/12/2013 a las 18:38 Razón: Agregar el ejemplo