Questo programma fornisce 6 come output, ma quando disapprovo la riga 9, l'output è 5. Perché? Penso che b.a non dovrebbe cambiare, dovrebbe rimanere 5 in main.Passaggio per valore/riferimento, che cosa?
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 è * sempre * passa per valore, ma il valore che si sta passando è la variabile di riferimento, quindi * sembra * essere passato per riferimento in questa situazione (ma non lo è). Modifica, come afferma @mprabhat nella sua grande risposta (1+). Inoltre ho upvoted la tua domanda in quanto non vedo perché è stato downvoted. Stiamo facendo downvoting perché la gente non nasce sapendo Java? –
Dovresti passare attraverso entrambe le versioni del tuo codice in un debugger e vedere la differenza. –
//s.a http://stackoverflow.com/questions/40480/is-java-pass-by-reference – FailedDev