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() == 0
vez 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() == 0
nã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() == 0
nã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.