Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java compareTo是如何工作的?_Java_Equals_Comparable_Compareto - Fatal编程技术网

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”。