Quando String
ho testato l'uguaglianza di s in Java, l'ho sempre usato equals()
perché a me questo sembra essere il metodo più naturale per farlo. Dopotutto, il suo nome dice già cosa intende fare. Tuttavia, un mio collega recentemente mi ha detto che mi è stato insegnato a usare compareTo() == 0
invece di equals()
. Questo mi sembra innaturale (poiché ha lo compareTo()
scopo di fornire un ordine e non confrontare per l'uguaglianza) e anche un po 'pericoloso (perché compareTo() == 0
non implica necessariamente l'uguaglianza in tutti i casi, anche se so che lo fa per String
' s) per me.
Non sapeva perché gli fosse stato insegnato a usare al compareTo()
posto di equals()
for String
, e non riuscivo a trovarne alcuna ragione. È davvero una questione di gusto personale o c'è una vera ragione per entrambi i metodi?
compareTo() == 0
non implica necessariamente l'uguaglianza in tutti i casi". Questo è assolutamente corretto! Questo è esattamente il significato della frase "coerente con uguale" nelle specifiche dell'API Java, ad esempio nella specifica della classe Comparable . Ad esempio, il metodo di confronto di String è coerente con uguale, ma il metodo di confronto di BigDecimal non è coerente con uguale.
.equalsIgnoreCase()
è il confronto più veloce se è appropriato, altrimenti.equals()
è quello che vuoi.