Beim Testen auf Gleichheit String
in Java habe ich immer verwendet, equals()
weil dies für mich die natürlichste Methode dafür zu sein scheint. Immerhin sagt der Name schon, was er tun soll. Ein Kollege von mir sagte mir jedoch kürzlich, man habe mir beigebracht, compareTo() == 0
statt zu benutzen equals()
. Dies fühlt sich für mich unnatürlich an (da compareTo()
dies eine Ordnung bieten und nicht für Gleichheit vergleichen soll) und sogar etwas gefährlich (weil compareTo() == 0
dies nicht unbedingt in allen Fällen Gleichheit impliziert, obwohl ich weiß, dass dies für String
mich der Fall ist ).
Er wusste nicht, warum ihm beigebracht wurde, compareTo()
statt equals()
für zu verwenden String
, und ich konnte auch keinen Grund finden, warum. Ist das wirklich eine Frage des persönlichen Geschmacks oder gibt es einen wirklichen Grund für eine der beiden Methoden?
compareTo() == 0
Bedeutet nicht unbedingt in allen Fällen Gleichheit". Das ist absolut richtig! Dies ist genau das, was der Ausdruck "konsistent mit Gleichen" in den Java-API-Spezifikationen bedeutet, beispielsweise in der Vergleichsspezifikation . Zum Beispiel ist String der Vergleichsmethode mit equals konsistent, aber BigDecimal der Vergleichsmethode ist inkonsistent mit equals.
.equalsIgnoreCase()
der schnellste Vergleich, wenn dies angemessen ist, andernfalls.equals()
ist es das, was Sie wollen.