Le variabili associate a tipi primitivi sono passate a un metodo come valore.
Cioe' viene fatta una copia e questa e' passata al metodo. Modifiche al valore passato non influenzano la variabile nel codice che richiama il metodo:
... int
i=2; a.A_method(i); j=i;//j=i=2
non 5 |
public
class A_Class{ void
A_method(int k){ |
Java tratta le variabili collegati ad oggetti come riferimento agli stessi.
Questo riferimento contiene l'indirizzo in memoria di un oggetto. Ma a differenza dei puntatori C++
... public
class A_Class{
Gli oggetti sono passati ai metodi per riferimento. Percio' l'oggetto referenziato puo' essere modificato dal metodo. Comunque, il riferimento
stesso e' passato per valore, cioe' viene fatta una copia del
valore dell'indirizzo in memoria dell'oggetto. Cosi' se la variabile corrispondente nel metodo e' modificata, non si avra'alcun effetto
sulla variabile originale. ... int
i=2; b.j
= 5; a.A_method(b); j=b.j;//j=20
non 5 public
class A_Class{ void
A_method(B_Class bb){ public
class B_Class{ Nota:
il test
if(a==b)... controlla solo se a
e b
puntano allo stesso oggetto, non se essi hanno gli stessi valori delle proprieta'. Alcune classi forniscono un metodo a.equals(b) che ritorna true se l'oggetto
a e' identico a b
A_Class
a,b;
a=new A_Class();
b=new
A_Class();
...
a.i = 4;
b.i = 40;
...
a=b;
a.i = 400;
...
int j=b.i;// =400
dato che a e b ora puntano
allo stesso
oggetto.
...
int
i=2;
...
}
A_Class a;
B_Class b;
a = new A_Class();
b = new B_Class();
ne'
100
...
...
bb.j=20;
...
bb= new B_Class();
bb.j=100;
}
}
int j=0;
...
}
}
Maintained by Giuseppe Zito :info@zitogiuseppe.com
Ultimo aggiornamento: