Ao testar a igualdade de String's em Java, sempre usei equals()porque para mim esse parece ser o método mais natural para isso. Afinal, o nome já diz o que pretende fazer. No entanto, um colega meu recentemente me disse que havia sido ensinado a usar em compareTo() == 0vez de equals(). Isso parece não natural (visto que compareTo()se destina a fornecer uma ordem e não comparar para igualdade) e até um pouco perigoso (porque compareTo() == 0não implica necessariamente igualdade em todos os casos, embora eu saiba que significa para String's) para mim.
Ele não sabia por que foi ensinado a usar em compareTo()vez de equals()para String, e também não consegui encontrar nenhuma razão para isso. É realmente uma questão de gosto pessoal ou existe alguma razão real para qualquer um dos métodos?
compareTo() == 0não implica necessariamente igualdade em todos os casos". Isso é absolutamente correto! Isso é exatamente o que a frase "consistente com igual" significa nas especificações da API Java, por exemplo, na especificação da classe Comparable . Por exemplo, o método de comparação de String é consistente com igual, mas o método de comparação de BigDecimal é inconsistente com igual.
.equalsIgnoreCase()é a comparação mais rápida se for apropriado, caso contrário,.equals()é o que você deseja.