【发布时间】:2015-09-07 17:13:00
【问题描述】:
我知道compareTo 会返回关于一个字符串与另一个字符串的相关程度的否定或肯定结果,但是为什么:
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ac3") == -1) {
System.out.println("Test");
}
}
}
是真的并且
public class Test {
public static void main(String[] args) {
String y = "ab2";
if(y.compareTo("ab3") == -1) {
System.out.println("Test");
}
}
}
也是这样吗?
【问题讨论】:
-
不要使用
==-1,而是使用<0。请注意,"ab2".compareTo("cb2")返回 -2,就像"ab2".compareTo("ab4")一样(结果是字符串索引中不同的 Unicode 字符表的差异 - 如果字符串的长度相同)。 -
使用
compareTo的比较不使用相关性:相关性是对称属性,而compareTo是(或至少应该是)反对称,至少在sign(a.compareTo(b)) = -sign(b.compareTo(a))的意义上。
标签: java equals comparable compareto