String
的相等性时,我一直使用equals()
方法,因为它似乎是最自然的方法。毕竟,它的名称已经说明了其意图。然而,我的一位同事告诉我,他被教导使用compareTo() == 0
而不是equals()
。这让我感到很不自然(因为compareTo()
用于提供排序而不是比较相等),甚至有点危险(因为compareTo() == 0
并不一定意味着在所有情况下都相等,尽管我知道对于String
是这样的)。他不知道为什么要使用
compareTo()
而不是equals()
,我也找不到任何原因。这真的只是个人口味问题吗?还是有任何真正的理由支持其中任意一种方法?
.equalsIgnoreCase()
是最快的比较方法,否则.equals()
是您想要的。 - user177800compareTo() == 0
并不一定意味着在所有情况下都相等"。这完全正确!这正是Java API规范中的短语“与相等一致”所指的意思,例如在Comparable类规范中。例如,String的比较方法与相等一致,但BigDecimal的比较方法与相等不一致。 - Stuart Marks