Questo ritorna false perchè gli oggetti complessi, al loro interno, sono rappresentati diversamente (ovvero ci sono degli attributi diversi, come il Nome interno).

Non è proprio così...

La versione di equals del metodo object ritorna true se i due riferimenti puntano allo stesso oggetto

Confronta qui