Este programa da 6 como salida, pero cuando elimino el comentario de la línea 9, la salida es 5. ¿Por qué? Creo que b.a no debería cambiar, debería seguir siendo 5 en principal.Pasa por valor/referencia, ¿qué?
1 class C1{
2 int a=5;
3 public static void main(String args[]){
4 C1 b=new C1();
5 m1(b);
6 System.out.println(b.a);
7 }
8 static void m1(C1 c){
9 //c=new C1();
10 c.a=6;
11 }
12 }
Java es * siempre * pase por valor, pero el valor que está pasando es la variable de referencia, por lo que * parece * pasar por referencia en esta situación (pero no lo es). Editar, como @mprabhat declara en su excelente respuesta (1+). También voté por encima de tu pregunta porque no veo por qué se votó negativamente. ¿Estamos bajoneando porque la gente no nace sabiendo Java? –
Debería pasar por las dos versiones de su código en un depurador y ver la diferencia. –
//s.a http://stackoverflow.com/questions/40480/is-java-pass-by-reference – FailedDev