Marco Mascardi ha scritto:
Ecco il mio problema, penso di aver capito abbastanza su i metodi che usano dati primitivi,
mi si presenta un metodo che usa dati non primitivi (un oggetto) e sono andato in tilt.
In Java il passaggio degli argomenti è sempre per VALORE. Nel caso di primitivi viene passata una
copia del valore numerico/boolean stesso. Nel caso dei tipi
reference (oggetti), viene passata una
copia del reference (cioè il riferimento) all'oggetto.
Nel codice postato viene creato 1 solo oggetto Risultato, è quel
new Risultato(5.0F). Non ce ne sono altri.
La invocazione di cr.cambiaRisultato(risultato) fa sì che il parametro 'risultato' riceva lo stesso valore (una copia appunto) della variabile 'risultato' del main.
Quindi il metodo cambiaRisultato ha "in mano" lo STESSO oggetto Risultato che hai creato nel main. E siccome l'oggetto Risultato ha un campo
pubblico 'risultato', il metodo cambiaRisultato PUÒ alterarlo, aggiungendo 1 (float).
Pertanto viene cambiato lo "stato" dell'oggetto e poi dal main questo cambiamento lo "vedi" ristampandolo con quel stampa() .