String
在Java中测试的相等性时,我一直使用,equals()
因为对我而言,这似乎是最自然的方法。毕竟,它的名字已经说明了它打算做什么。但是,我的一位同事最近告诉我,有人教我使用compareTo() == 0
代替equals()
。这对我来说感觉很不自然(这compareTo()
是为了提供顺序而不是为了比较而不是比较平等),甚至有些危险(因为compareTo() == 0
不一定在所有情况下都意味着平等,即使我知道这样做对于String
)。
他不知道为什么要教他compareTo()
代替equals()
for 来使用String
,我也找不到任何原因。这真的是个人喜好问题,还是使用这两种方法的真正原因?
compareTo() == 0
不一定在所有情况下都意味着平等”。这是绝对正确的!这正是Java API规范(例如,Comparable类规范)中的“与等于一致”一词的含义。例如,String的比较方法与equals一致,但是BigDecimal的比较方法与equals 不一致。
.equalsIgnoreCase()
如果我们合适的话)是最快的比较,否则.equals()
,这就是您想要的。