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