为什么System.out.println("0:00".compareTo("0"));结果是3?

我真的很好奇。

为什么 System.out.println("0:00".compareTo("0")); 结果是 3?我期望 10 作为 : 58 的 ASCII 代码,而 0 的 ASCII 代码是 48。

回答

请阅读文档到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


以上是为什么System.out.println("0:00".compareTo("0"));结果是3?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>