我想用方法string.compareTo(anOtherString)比较两个字符串;它给我一个奇怪的价值......(我需要一个0到57之间的整数值,每个字符串) 在以下示例中,第一行传递2,第二行传递第二行。
System.out.println("And".compareTo("A"));
System.out.println("Bus".compareTo("A"));
我预计第一行是1,第二行是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。