Ciao a tutti,
ho un dubbio a proposito del passaggio per riferimento.
Ecco un esempio:

codice:
class A{
 int val = 100; 

static void incrementa(int i){
 i = i + 1; 
} 

static void annulla(A a){
 a.val = 0;
 a = null; 
}

public static void main(String[] args){
 int i = 0; 

System.out.println("valore di i prima di invocare 'incrementa(i)': " + i); incrementa(i);
System.out.println("valore di i dopo che è stato invocato 'incrementa(i)': " + i);
System.out.println(); 
A a = new A(); 
System.out.println("valore di 'a' prima di invocare 'annulla(a)': " + a);
System.out.println("valore di 'a.val' prima di invocare 'annulla(a)': " + a.val); annulla(a);
System.out.println(); 
System.out.println("valore di 'a' dopo che è stato invocato 'annulla(a)': " + a);
System.out.println("valore di 'a.val' dopo che è stato invocato 'annulla(a)': " + a.val); } 
}
Eseguendo questo codice si può notare che l'istruzione "a=null;" contenuta nel metodo "annulla", viene eseguita ma l'oggetto "a" all'interno del main non viene distrutto come ci si aspetterebbe facendo puntare a null l'oggetto "a".
Come mai?
Se metto la stessa istruzione all'interno del main invece l'oggetto perde il riferimento e quindi di fatto non esiste più.

Qualcuno mi sa togliere questo dubbio?
Grazie!!