Ciao a tutti,
ho un dubbio a proposito del passaggio per riferimento.
Ecco un esempio:
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".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); } }
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!!

Rispondi quotando