Post by Claudio Benvenutihttp://www.wmlscript.it/java/corso_14.asp
Gli ho dato un'occhiata ...
Cito la tua fonte :
La differenza pratica tra un reference ed una variabile, è evidente
nelle assegnazioni. Consideriamo il seguente frammento di codice:
double unNumero = 5.0;
double unAltroNumero = unNumero;
Data unGiorno = new Data();
Data unAltroGiorno = unGiorno;
Sia per il tipo di dato primitivo, sia per quello complesso, abbiamo
quindi creato un comportamento equivalente: dichiarazione ed
assegnazione di un valore, e riassegnazione di un altro valore.
La variabile unAltroNumero, assumerà lo stesso valore della variabile
unNumero, ma le due variabili, rimarranno indipendenti l’una dall’altra.
Infatti, il valore della variabile unNumero, sarà copiato nella
variabile unAltroNumero. Se il valore di una delle due variabili sarà in
seguito modificato, l’altra variabile non apporterà modifiche al proprio
valore.
Invece, il reference unAltroGiorno, semplicemente assumerà il valore
(cioè l’indirizzo) del reference unGiorno. Ciò significa che
unAltroGiorno punterà allo stesso oggetto cui punta unGiorno.
Quindi, se in seguito sarà apportata una qualche modifica tramite uno
dei due reference all’oggetto comune, ovviamente questa sarà
verificabile anche tramite l’altro reference. Per intenderci:
unGiorno.anno
è sicuramente equivalente a:
unAltroGiorno.anno
** Passaggio di parametri per valore **
Il passaggio di parametri in Java avviene sempre per valore.
Stesso discorso vale per i tipi reference: viene sempre passato il
valore del reference, ovvero, l'indirizzo in memoria
Il fatto che il passaggio avvenga sempre per valore, garantisce che un
oggetto possa essere modificato, e contemporaneamente, si è certi che
dopo la chiamata del metodo il reference punti sempre allo stesso oggetto.
*** FINE ***
Dice cose giuste questo articolo.
Tutto è passato per valore, solo che se passi un oggetto il valore che
si passa è il puntatore all'oggetto (detto reference), e quindi è come
se si passasse per indirizzo.
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Xoen
Jabber ID : ***@jabber.linux.it
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~