Java 比较方法误差

Java 比较方法误差,java,Java,该程序以如下方式提供输出: -1 1 -12 为什么-12??当使用compareTo方法时,它应该只返回1、-1或0输出 class psp { public static void main(String gg[]) { String a="AMIT"; String b="BA"; String c="AB"; String d="ANURAG"; System.out.println(a.compareTo(b)); System

该程序以如下方式提供输出:

-1
1
-12
为什么-12??当使用compareTo方法时,它应该只返回1、-1或0输出

class psp
{
  public static void main(String gg[])
  {
    String a="AMIT";
    String b="BA";
    String c="AB";
    String d="ANURAG";
    System.out.println(a.compareTo(b));
    System.out.println(b.compareTo(c));
    System.out.println(c.compareTo(d));
  }
}
来自javadocs:

返回负整数、零或正整数,如下所示 对象小于、等于或大于指定对象


因此,它可以返回任何整数,而不仅仅是
-1,0,1

如果您看到它的源代码,它会逐个字符比较字符串,如果字符不相等,它会返回字符之间的差异,以便检查每个大小写

“AMIT”。与(“BA”)相比

  • A!=B
    返回
    A-B
    (65-66)即
    -1
  • “BA”。比较AB(“AB”)

  • B!=A
    返回
    B-A
    (66-65)即
    1
  • “AB”。比较AB(“ANURAG”)

  • A==A
    条件为真检查下一个字符
  • B!=N
    return
    B-N
    (66-78)return
    -12

  • 它不会给出输出1,-1,0,因为compareTo()方法按字典顺序比较两个字符串

     s1.compareTo(s2)
    
    一,。如果两个s1在词汇上等于s2,则compareTo()返回0。 2.如果s2字符串按字典顺序大于s1字符串,则comapareTo()返回小于0的值。
    3 compareTo()返回大于0的值,如果s2字符串按字典顺序小于s1字符串

    ,则返回
    按字典顺序小于
    的数字。从文档。。。。将此对象与指定的顺序对象进行比较。返回一个负整数、零或正整数,因为此对象小于、等于或大于指定的对象。您在哪里读取它应该是-1或1?您将始终希望读取文档。