博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
String中的CompareTo
阅读量:6757 次
发布时间:2019-06-26

本文共 1716 字,大约阅读时间需要 5 分钟。

 

  在API源码中,String的compareTo其实就是一次比较两个字符串的ASCII码。如果两个字符串的ASCII相等则继续后续比较,否则直接返回两个ASCII的差值。如果两个字符串完全一样,则返回0.下面是源码:

public int compareTo(String anotherString) {    int len1 = count;    int len2 = anotherString.count;    //获取到两个字符串的较短的长度    int n = Math.min(len1, len2);    char v1[] = value;    char v2[] = anotherString.value;    int i = offset;    int j = anotherString.offset;    if (i == j) {        int k = i;        int lim = n + i;        while (k < lim) {            char c1 = v1[k];            char c2 = v2[k];            //如果两个字符的ASC不相同,则直接返回if (c1 != c2) {                return c1 - c2;            }            k++;        }    } else {        while (n-- != 0) {           char c1 = v1[i++];           char c2 = v2[j++];             //如果两个字符的ASC不相同,则直接返回           if (c1 != c2) {               return c1 - c2;           }        }    }    //如果都一样,返回两个字符串的长度查    return len1 - len2;    }

由上面的代码,我们可以很方便计算两个字符串的compareTo的值:

 

  

  int i1 = "abcd".compareTo("adhf");

  int i2 = "abc".compareTo("abcdef");
  int i3 = "abcd".compareTo("abc");
  System.out.println(i1);//-2
  System.out.println(i2);-3
  System.out.println(i3);0

 

  举例:compareTo的实际应用?于进行简单的字符串排序。(例如使用compareTo进行姓名的排序)

  

// 使用简单的循环排序        for (int i = 0; i < array.length - 1; i++) {            for (int j = i + 1; j < array.length; j++) {                if (array[i].compareTo(array[j]) > 0) {                    String temp = array[i];                    array[i] = array[j];                    array[j] = temp;                }            }        }        for (int i = 0; i < 5; i++) {            System.out.println(array[i]);        }    }

针对上面String的排序后,字符串的内容将会是:

james  libai  lilei  owen  wolf  

 

转载于:https://www.cnblogs.com/vivi-d/p/4161007.html

你可能感兴趣的文章
创建 JavaScript 类和对象 prototype
查看>>
ibatis映射及参数设置
查看>>
Python学习笔记【第三篇】:if判断、while循环、for循环
查看>>
运用正则表达式不使用内置方法实现计算器
查看>>
Mac OS 设置$PATH环境变量
查看>>
闭区间合并
查看>>
兄弟郊游问题
查看>>
Jquery页面中添加键盘按键事件,如ESC事件
查看>>
Msm 高通平台配置记录之一
查看>>
列表的基本操作
查看>>
HDU1856:More is better(并查集)
查看>>
大端模式和小端模式
查看>>
农民工与学生为楼癫狂 富人加速撤离
查看>>
java中的包装类
查看>>
android,性能优化,内存优化管理,高级缓存 (转)
查看>>
Python_collections_OrderedDict有序字典部分功能介绍
查看>>
MyBatis-参数处理
查看>>
java 基础功能
查看>>
3D爱心漂亮代码
查看>>
git merge的本质
查看>>