Stavolta, e ringrazio anticipatamente ancora una volta il santo che mi rispondera' (Andbin sindaco!!!), affronto un problema di cui so gia' qualcosa (incredibile!!!).

In java, i tipi primitivi sono passati per valore.

Cio' implica che, se scrivo

int i = 7;
int p = 3;
i = p;
p = 4
alla fine, p avra' valore 4 e i avra' valore 3. (E comunque mi sfugge una cosa... Questo vuol dire che, quando all'interno di un metodo creo nello stack dinamicamente una variabile valore, nella cella dello stack non c'e' un indirizzo ma un vero e proprio valore vero??? Da qui, passaggio per valore...)

Ma se scrivo
Data d = new Data (29/06/1982);
Data f = new Data (01/07/1985);
d = f;
f = new Data (17/02/1949
adesso f punta all'indirizzo in cui c'e' il valore 17/02/1949 e d all'indirizzo che contiene il valore 01/07/1985, e soprattutto che il garbage collector si pappa le celle di memoria dello heap che contenevano 29/06/1982...
Se poi non avessi scritto l'ultima riga e stampavo i due valori d e f, avrei avuto come output una riga che testimoniava che era stata eseguita una copia degli indirizzi, dato che avrei ottenuto 2 date uguali...

Pero', se implemento un metodo del tipo

public void assegnaDate ( Data a, Data c) {
a = c;
}
e nel main lo richiamo

Date compl1 = new Date (29/06/1982):
Date compl2 = new Date (01/07/1985);
Classe.assegnaDate (compl1, compl2);
alla fine perche' sia compl1 che compl2 non puntano allo stesso indirizzo che conterrebbe il valore 01/07/1985???

Cosa accade nei metodi???