Al probar la igualdad de String
en Java, siempre lo he usado equals()
porque para mí este parece ser el método más natural para hacerlo. Después de todo, su nombre ya dice lo que se pretende hacer. Sin embargo, un colega mío me dijo recientemente que me habían enseñado a usar en compareTo() == 0
lugar de equals()
. Esto me parece antinatural (ya que compareTo()
está destinado a proporcionar un orden y no comparar por igualdad) e incluso algo peligroso (porque compareTo() == 0
no implica necesariamente igualdad en todos los casos, aunque sé que sí lo hace String
) para mí.
No sabía por qué le enseñaron a usar en compareTo()
lugar de equals()
para String
, y tampoco pude encontrar ninguna razón por la cual. ¿Es esto realmente una cuestión de gusto personal o hay alguna razón real para cualquiera de los métodos?
compareTo() == 0
no implica necesariamente igualdad en todos los casos". ¡Esto es absolutamente correcto! Esto es exactamente lo que significa la frase "coherente con iguales" en las especificaciones de la API de Java, por ejemplo, en la especificación de clase Comparable . Por ejemplo, el método de comparación de String es consistente con equals, pero el método de comparación de BigDecimal es inconsistente con equals.
.equalsIgnoreCase()
es la comparación más rápida si es apropiada, de lo contrario.equals()
es lo que quieres.