黑马程序员技术交流社区

标题: String类compareTo方法,“hello”和“hel”返回结果为2 [打印本页]

作者: ㏒假™面具    时间: 2015-3-8 19:01
标题: String类compareTo方法,“hello”和“hel”返回结果为2
本帖最后由 ㏒假™面具 于 2015-3-8 19:09 编辑
  1. <div class="blockcode"><blockquote>public class Test {
  2.         public static void main(String[] args) {
  3.                 String str = "Hello";
  4.                 String str_1 = "Hel";
  5.                 int a = str.compareTo(str_1);
  6.                 System.out.println(a);
  7.         }
  8. }
  9. public int compareTo(String anotherString) {
  10. int len1 = value.length;
  11. int len2 = anotherString.value.length;
  12. int lim = Math.min(len1, len2);
  13. char v1[] = value;
  14. char v2[] = anotherString.value;

  15. int k = 0;
  16. while (k < lim) {
  17. char c1 = v1[k];
  18. char c2 = v2[k];
  19. if (c1 != c2) {
  20. return c1 - c2;
  21. }
  22. k++;
  23. }
  24. return len1 - len2;
  25. }
复制代码

一直疑惑为什么“hello”和“hel”比较结果为2.今天看源码终于发现,String类将接收的字符串转换成了字符数组然后,逐个比较元素。当元素相同仅长度不同时,返回长度差。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2