compareTo如何工作?

Har*_*rsh 9 java equals compareto comparable

我知道这compareTo会对一个字符串与另一个字符串的相关性返回一个负面或正面的结果,但是为什么:

public class Test {
    public static void main(String[] args) {
        String y = "ab2";
        if(y.compareTo("ac3") == -1) {
            System.out.println("Test");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

是真的

public class Test {
    public static void main(String[] args) {
        String y = "ab2";
        if(y.compareTo("ab3") == -1) {
            System.out.println("Test");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

也是如此?

Tun*_*aki 11

一般合同Comparable.compareTo(o)是返回

  • 如果它大于另一个对象,则为正整数.
  • 如果它低于另一个对象,则为负整数.
  • 如果这等于另一个对象,则为0.

在您的例子"ab2".compareTo("ac3") == -1"ab2".compareTo("ab3") == -1 不仅意味着"ab2"比两个下"ac3""ab3".你不能断定任何方面"ac3""ab3"只有这些例子.

这个结果是预期的,因为b它来自c字母表(so "ab2" < "ac3")2之前和之前3(所以"ab2" < "ab3"):Java按字典顺序排序字符串.