A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 ㏒假™面具 于 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类将接收的字符串转换成了字符数组然后,逐个比较元素。当元素相同仅长度不同时,返回长度差。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马