String
Java에서의 동등성을 테스트 할 때 나는 equals()
이것이 가장 자연스러운 방법 인 것처럼 보이기 때문에 항상 사용 했습니다. 결국 그 이름은 이미 의도 한 바를 말하고 있습니다. 그러나 최근에 동료 compareTo() == 0
가 equals()
. 이것은 부자연스럽고 ( compareTo()
순서를 제공하고 평등을 비교하지 않기위한 것이므로) 다소 위험하다고 느껴집니다 (왜냐하면 compareTo() == 0
모든 경우에 평등을 의미하지는 않기 때문입니다 String
).
그가 사용하는 배웠습니다 그는 왜 몰랐 compareTo()
대신 equals()
에 String
의, 나는 또한 어떤 이유를 찾을 수 없습니다. 이것은 정말로 개인적인 취향의 문제입니까, 아니면 두 방법 모두에 대한 진정한 이유가 있습니까?
compareTo() == 0
모든 경우에 반드시 평등을 의미하지는 않습니다." 이것은 절대적으로 정확합니다! 이것이 바로 Java API 사양 (예 : Comparable 클래스 사양) 에서 "일관된 일치"라는 문구가 의미하는 바입니다 . 예를 들어, String의 비교 방법은 같음과 일치하지만 BigDecimal의 비교 방법은 같음과 일치하지 않습니다 .
.equalsIgnoreCase()
것이 적절하다면 가장 빠른 비교이고 그렇지 않으면.equals()
원하는 것입니다.