Marco Mascardi ha scritto:
ancora non ero arrivato a capire che come parametri di un metodo si possono utilizzare anche oggetti
Quando "passi" un oggetto ad un metodo/costruttore, non passi l'oggetto in sé con tutti i suoi dati; passi solo il "reference" all'oggetto che alla fin fine è un
valore finito, di un tot di bit.
Dato:
Dipendente dip1 = new Dipendente();
Dipendente dip2 = new Dipendente();
// .. setXXX su dip1/dip2
int diff = dip1.getDifferenzaAnni(dip2);
Quando getDifferenzaAnni viene eseguito, il parametro "altro" del metodo ha lo STESSO valore che è contenuto anche nella variabile dip2 del chiamante. Questo vuol dire che in quel momento hai 2 variabili reference che fanno riferimento allo stesso medesimo oggetto.
Il reference, come ho detto, alla fin fine è un valore come un altro solo che .... per il programmatore Java è un valore molto "opaco", perché:
1) Non sai a priori quanti bit occupa in memoria. Questo dipende dalla implementazione della JVM dipendentemente anche dal Sistema Operativo e dalla architettura hardware sottostante.
2) Non lo puoi "stampare", non è come un int o long che ha un range di valori ben preciso e lo puoi visualizzare, utilizzare ecc..
3) Non puoi usare la "aritmetica dei puntatori" (cosa che invece è possibile in C/C++).
4) Non puoi creare reference che puntano chissà dove come ti pare.
Per il programmatore Java, l'unica cosa che conta è che una variabile reference: o vale
null (=nessun oggetto referenziato) oppure se non
null vuol dire che fa riferimento ad un oggetto ben preciso.
Stop, tutto qui.