回答
由于"0"
小于"1"
。字典对比是每个字符的字符,停止与不同的第一个字符。
此进行详细描述String.compareTo
:
这是词典式排序的定义。如果两个字符串不同,那么它们在某个索引处具有不同的字符,这是两个字符串的有效索引,或者它们的长度不同,或者两者都有。如果它们在一个或多个索引位置具有不同的字符,则让这样的索引最小;那么其位置为k的字符具有较小值的字符串(通过使用
<
运算符确定),按字典顺序排在其他字符串之前。在这种情况下,compareTo
返回两个字符值中的ķ位置在这两个串的差 - 即,值:this.charAt(k)-anotherString.charAt(k)
如果在它们没有不同的索引位置,则较短的字符串按字典顺序排列在较长的字符串之前。在这种情况下,
compareTo
返回字符串的长度的差 - 即,值:this.length()-anotherString.length()
由于字符串比较(Comparable
实现)依赖于的每个字符的Unicode值的比较lexicographical比较String
s。
而且"1"
(U+0031
Unicode)的是根据 unicode的表之后"0"
(U+0030
Unicode)的。
它的工作原理相同的方式比在字典和不如数值比较。
你比较一些String
s,而不是一些Number
s。
"azerty"
来"zip"
之前因为"a"
是前"z"
这是"1"
和"01"
同样的事情。
"0"
在"1"
之前。所以"01"
< "1"
。
您可以参考String.compareTo()
javadoc来更好地了解该方法的契约。
假设你要比较两个字符串的数值,它们是整数:
Integer.parseInt("0") < Integer.parseInt("01")
它是由语言环境来确定如何比较字符串。对于westeren语言,你有一个简单的字符排序,你从左边开始。这里最左边的字符分别是“0”和“1”,而“0”的unicode值低于“1”,立即确定以“0”开始的字符串在以“1”开始的字符串之前。
该字符串意外地类似于其他字符(如整数字符)是不涉及这种机制。如果与需要解决的任务相关,则需要编写代码以考虑这一点。
- 1. 在java中比较两个字符串
- 2. 比较两个字符串中的Java
- 3. 比较两个数字字符串值
- 4. 如何比较java中的两个数组字符串?
- 5. Java excel - 比较两个字符串
- 6. 比较两个字符串Java风格
- 7. JAVA,比较两个字符串
- 8. 比较两个字符串[]
- 9. 比较两个字符串?
- 10. 比较两个字符串
- 11. 如何比较两个w_char []字符串
- 12. 如何比较两个字符串
- 13. 如何比较两个Q字符串?
- 14. Javascript如何比较两个字符串
- 15. 如何比较两个字符串?
- 16. 如何比较两个base64字符串?
- 17. 在python中比较两个字符串
- 18. 在freemarker中比较两个字符串
- 19. 在字符比较两个字符串中的字符
- 20. 如何比较Java中的两个版本字符串?
- 21. 如何比较字符串中的两个字符?
- 22. C#比较两个字符串数组
- 23. TSQL函数比较两个字符串
- 24. C++比较两个字符串文字
- 25. 比较两个字符串由字母
- 26. 逐字比较.NET中两个字符串的比较
- 27. 比较两个字符串,如日期
- 28. 比较ruby中的两个字符串
- 29. 比较C++中的两个字符串
- 30. 比较ArrayList中的两个字符串
因为'0'<'1'。 –
不知道你们为什么低估了。我不想知道如何比较字符串。我只是想知道为什么一个字符串比另一个字符串少。就这样。请在投票前仔细阅读问题。 – ashley