При тестировании на равенство String в Java я всегда использовал equals(), потому что для меня это, по-видимому, самый естественный метод для него. В конце концов, его имя уже говорит о том, что он намерен делать. Однако недавно мой коллега сказал, что меня учили использовать compareTo() == 0 вместо equals(). Это кажется неестественным (поскольку compareTo() предназначен для обеспечения упорядочения, а не сравнения для равенства) и даже несколько опасного (поскольку compareTo() == 0 не обязательно подразумевает равенство во всех случаях, хотя я знаю, что он делает для String) мне.
Он не знал, почему его учили использовать compareTo() вместо equals() для String, и я тоже не мог найти причину. Это действительно вопрос личного вкуса, или есть ли настоящая причина для любого метода?