При тестуванні на рівність String
's у Java я завжди використовував, equals()
тому що мені це здається найбільш природним методом. Зрештою, його назва вже говорить про те, що він призначений робити. Однак нещодавно моя колега сказала, що мене навчили використовувати compareTo() == 0
замість цього equals()
. Це відчувається неприродно (як compareTo()
мається на увазі впорядкувати, а не порівнювати рівність) і навіть дещо небезпечно (бо compareTo() == 0
не обов'язково означає рівність у всіх випадках, хоча я знаю, що це робить для String
мене).
Він не знав , чому він вчив використовувати compareTo()
замість equals()
для String
«s, і я також не міг знайти причину. Це справді питання особистого смаку, чи є якась реальна причина для будь-якого методу?
compareTo() == 0
не обов'язково означає рівність у всіх випадках". Це абсолютно правильно! Це саме те, що словосполучення "узгоджується з рівними" означає у специфікаціях Java API, наприклад, у специфікаціях класу Comparable . Наприклад, метод порівняння String відповідає рівним, але метод порівняння BigDecimal не відповідає рівним.
.equalsIgnoreCase()
це найшвидше порівняння, якщо це доречно, інакше.equals()
- те, що ви хочете.