Originariamente inviato da valia
va bene anche spiegare perché (visto che è una persona che si avvicina ora a java).
In java gli oggetti vanno tutti confrontanti per equals: == (come inizialmente avevi fatto) confronta i riferimenti, quindi se i riferimenti sono uguali (stesso oggetto) torna true, altrimenti false.

In alcuni casi il compilatore è furbo e "risparmia" una variabile se assegni valore uguali, in altri casi non è detto, quindi in generale è meglio fare riferimento ad equals.
Nota che per i confronti di equals va fatto l'override (non l'overload), altrimenti di default si segue il confronto dei riferimenti.
All'inizio sembra assurdo, poi quando ne capisci le potenzialità lo apprezzi
ok ma mentre rispondevo avevo visto che era stato già spiegato nel commento prima del mio