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?
就你而言,没有人知道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>处两个字符值的差,即值:
Run Code Online (Sandbox Code Playgroud)this.charAt(k)-anotherString.charAt(k)如果在它们之间没有索引位置不同,则较短的字符串在字典上在较长的字符串之前。在这种情况下,compareTo返回字符串长度的差-即值:
Run Code Online (Sandbox Code Playgroud)this.length()-anotherString.length()
对于最后一种情况,对于的长度String,似乎文档可以返回-1、0、1以外的长度