При тестировании на равенство String
в Java я всегда использовал, equals()
потому что мне это кажется наиболее естественным методом для этого. В конце концов, его название уже говорит о том, для чего он предназначен. Однако мой коллега недавно сказал, что меня научили использовать compareTo() == 0
вместо equals()
. Это кажется мне неестественным (поскольку compareTo()
предназначено для упорядочивания, а не сравнения на равенство) и даже несколько опасным (потому compareTo() == 0
что не обязательно подразумевает равенство во всех случаях, хотя я знаю, что это так для String
) для меня.
Он не знал, почему его учили использовать compareTo()
вместо equals()
for String
, и я также не мог найти причины, почему. Это действительно вопрос личного вкуса, или есть реальная причина для любого метода?
compareTo() == 0
не обязательно подразумевает равенство во всех случаях». Это абсолютно правильно! Это именно то , что фраза « в соответствии с» равными средствами в спецификации API Java, например , в Сравнительной спецификации класса. Например, метод сравнения String совместим с equals, но метод сравнения BigDecimal несовместим с equals.
.equalsIgnoreCase()
это самое быстрое сравнение, если оно уместно, иначе.equals()
это то, что вы хотите.