为什么system.out.println(“0:00.compareto(“0”));结果是3?

qqrboqgw  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(458)

我真的很好奇。
为什么system.out.println(“0:00.compareto(“0”));结果是3?我希望10是58的ascii码,0的ascii码是48。

ff29svar

ff29svar1#

请阅读文档 String.compareTo :
https://docs.oracle.com/javase/7/docs/api/java/lang/string.html#compareto(java.lang.string)
如果它们在一个或多个索引位置具有不同的字符,则k是此类索引的最小值;然后,其在位置k处的字符具有较小值的字符串(通过使用<运算符确定)按字典顺序排在另一个字符串之前。在本例中,compareto返回两个字符串中位置k处的两个字符值之差,即:

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

如果没有索引位置使它们不同,那么按照字典顺序,较短的字符串先于较长的字符串。在本例中,compareto返回字符串长度的差值,即值:

this.length()-anotherString.length()

第一个字符串的第一个字符等于整个第二个字符串( "0" ). 因此,他们是比较他们的长度。第一个字符串长度为4个字符,第二个字符串长度为1个字符。所以区别是 3

相关问题