String Compare与实际返回值

在oracles 网站上的Java API中:“compareTo返回:”如果参数字符串等于此字符串,则值为0; 如果此字符串按字典顺序小于字符串参数,则小于0; 如果此字符串在字典上大于字符串参数,则值大于0。“”

这是一个if语句:

String a = "abd"; String b = "abc"; if(a.compareTo(b) >= 1) 

返回true,因为字符串a更大,按字典顺序排列。

我的问题是,compareTo总是返回0,1或-1吗? 或者它是否返回字符串大于或小于字符串参数的实际数量

所以在上面的if语句中,由于“abd”大于“abc”,它是否返回1?

就你而言,没有人知道compareTo返回值的大小是什么,只是符号。 在实践中,大多数compareTo实现将返回-1,0或1,但是合同明确指出正面或负面,并且您应该相应地编写代码(例如,使用int compare = a.compareTo(b); if(compare > 0) {...} else... )。

根据http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo%28java.lang.String%29

在这种情况下,compareTo返回两个字符串中位置k>的两个字符值的差值 – 即值:

 this.charAt(k)-anotherString.charAt(k) 

如果没有它们不同的索引位置,那么较短的字符串按字典顺序排在较长的字符串之前。 在这种情况下,compareTo返回字符串长度的差异 – 即值:

 this.length()-anotherString.length() 

对于最后一种情况,对于String的长度,通过文档似乎可以返回除-1,0,1之外的其他值