string.compareTo(anOtherString);

时间:2011-05-11 17:14:22

标签: java string compare

我想用方法string.compareTo(anOtherString)比较两个字符串;它给我一个奇怪的价值......(我需要一个0到57之间的整数值,每个字符串) 在以下示例中,第一行传递2,第二行传递第二行。

    System.out.println("And".compareTo("A"));
    System.out.println("Bus".compareTo("A"));

我预计第一行是1,第二行是2 ......有人可以向我解释一下吗?

有更好的可能吗?

感谢。

2 个答案:

答案 0 :(得分:2)

阅读documentation for String.compareTo()

  

如果他们有不同的角色   一个或多个指数头寸......   compareTo返回的差异   位置k处的两个字符值   在两个字符串中。如果没有   它们不同的指数位置   ... compareTo返回差异   字符串的长度。

答案 1 :(得分:1)

如果结果是> 0,然后第一个字符串更大,按字母顺序由UTF-16代码单元。如果结果是< 0,然后第一个字符串是较小的,按字典顺序排列。

除了符号之外,你不应该依赖它的实际值以及它是否为零。

来自http://download.oracle.com/javase/1,5.0/docs/api/java/lang/String.html#compareTo(java.lang.String

  

<强>返回:   如果参数字符串等于此字符串,则值为0;如果此字符串按字典顺序小于字符串参数,则小于0的值;如果此字符串按字典顺序大于字符串参数,则值大于0.

顺便说一下,如果你想要进行区域敏感的比较,例如如果您要比较人类可读的文字,请改用java.text.Collator.compare