String Compare与实际返回值

cup*_*ava 1 java string compareto

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

这是一个if语句:

String a = "abd";
String b = "abc";

if(a.compareTo(b) >= 1)
Run Code Online (Sandbox Code Playgroud)

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

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

所以在上面的if语句中,因为"abd"大于"abc",它是否返回1?

chr*_*ke- 5

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


Die*_*nto 5

根据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)
Run Code Online (Sandbox Code Playgroud)

如果在它们之间没有索引位置不同,则较短的字符串在字典上在较长的字符串之前。在这种情况下,compareTo返回字符串长度的差-即值:

this.length()-anotherString.length()
Run Code Online (Sandbox Code Playgroud)

对于最后一种情况,对于的长度String,似乎文档可以返回-1、0、1以外的长度