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
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...)int i = 7;
int p = 3;
i = p;
p = 4
Ma se scrivo
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...Data d = new Data (29/06/1982);
Data f = new Data (01/07/1985);
d = f;
f = new Data (17/02/1949![]()
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
e nel main lo richiamopublic void assegnaDate ( Data a, Data c) {
a = c;
}
alla fine perche' sia compl1 che compl2 non puntano allo stesso indirizzo che conterrebbe il valore 01/07/1985???Date compl1 = new Date (29/06/1982):
Date compl2 = new Date (01/07/1985);
Classe.assegnaDate (compl1, compl2);
Cosa accade nei metodi???

Rispondi quotando

