Java compareTo是如何工作的?
我知道,Java compareTo是如何工作的?,java,equals,comparable,compareto,Java,Equals,Comparable,Compareto,我知道,compareTo返回一个关于一个字符串与另一个字符串的相关性的负或正结果,但为什么: public class Test { public static void main(String[] args) { String y = "ab2"; if(y.compareTo("ac3") == -1) { System.out.println("Test"); } } } 是真的 public cl
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");
}
}
}
这也是真的吗?的总合同是退货
- 如果大于另一个对象,则为正整数
- 如果该值低于另一个对象,则为负整数
- 如果这等于另一个对象,则为0
“ab2”。compareTo(“ac3”)==-1
和“ab2”。compareTo(“ab3”)==-1
仅表示“ab2”
低于“ac3”
和“ab3”
。仅凭这些例子,您无法得出任何关于“ac3”
和“ab3”
的结论
由于字母表中
b
在c
之前(因此“ab2”
)和2
在3
之前(因此“ab2”
):Java对字符串进行排序。比较字符串的如果第一个字符串
返回-1(调用该方法的一个)按字典顺序排在第二个字符串(该方法的参数)之前。“ab2”排在“ab3”之前(因为前两个字符相等,2排在3之前),也排在“ac3”之前(因为第一个字符相等,b排在c之前),因此两个比较都返回-1。compareTo()根据字母顺序比较两个字符串。两个测试都有一个按字母顺序排序的字符串,该字符串在与之比较的字符串之前。换句话说:
- ab2
- ab2
顺便说一下,您应该在if语句中使用“<0”而不是“=-1”,因为compareTo
spec说明函数返回负数,而不是具体的“-1”不要使用==-1
但是比较使用compareTo
不使用相关性:相关性是对称属性,而compareTo
是(或至少应该是)反对称的,至少在符号(a.compareTo(b))=-sign(b.compareTo(a))的意义上是这样的
。更准确地说:如果第一个字符串位于第二个字符串之前,则字符串的compareTo返回一个负数。重要的是,要知道“ab7”仍将小于“ac2”,即使最后一个整数建议ab7应大于ac2,因为compareTo()词典编纂的工作原理如下:-如果字符串不同,那么在我们的示例“ab7”和“ac2”中取其不同的最小索引,最小索引为1(即使索引2也不同!),在该索引中,请参见词典编纂顺序(b小于c),因此“ab7”小于“ac2”。