Il metodo equals serve a definire il confronto tra due oggetti per verificare se siano logicamente uguali.
Questo è necessario perché l'operatore di uguaglianza == è vero solo quando gli oggetti confrontati puntano alla stessa istanza.
Ti spiego con un esempio:
codice:
String a = new String("A");
String b = new String("A");
String c = a;
boolean x = (a == b); //falso sono due istanze diverse
boolean y = (a.equals(b)); //vero, entrambi sono due stringhe di valore "A"
boolean z = (a == c); //vero, entrambi puntano alla stessa istanza
Al metodo equals puoi passare qualsiasi oggetto, infatti il primo if verifica che o non sia nullo e che la sua classe sia uguale a quella della tua classe, altrimenti ritorna falso.
Equal ritornerà vero solo se il parametro è di classe Coppia e se i valori della coppia della tua istanza sono uguali al valore della coppia o.