Il mio libro di Java afferma che i riferimenti a oggetto vengono copiati per valore.
Per esempio nel seguente statement

conto1.trasferisciDenaro(ContoBancario altroConto);
altroConto è passato per valore

Ok sono d'accordo, ma poi non capisco il meccanismo successivo, il libro continua a dire:
"un metodo Java può aggiornare lo stato di un oggetto ma non può sostituire il contenuto di un riferimento a oggetto"

Praticamente se il metodo trasferisciDenaro fosse fatto cosi:
Codice PHP:
public void trasferisciDenaro(ContoBancario altroContodouble denaro)
{
    
altroConto.versaDenaro(denaro);  //questa istruzione è ok
    
altroConto = new ContoBancario();  //non funziona
   
...

non capisco come fa a funzionare la prima istruzione, come fa a modificare altroConto se gliel'ho passato per valore e non per riferimento?