Java中String字符串的compareTo方法

初学者一枚,今天使用字符串的compareTo方法的时候,想知道原理,就翻了翻源码。


/*
*如果参数字符串等于此字符串,则返回值 0;
*如果此字符串按字典顺序小于字符串参数,则*返回一个小于 0 的值;
*如果此字符串按字典顺序大于字符串参数,则返回一个大于 0 的值。
*/
    private final char value[];
    
    public int compareTo(String anotherString) {
        int len1 = value.length;
        int len2 = anotherString.value.length;
        //取数组长度里面最小的
        int lim = Math.min(len1, len2);
        
        // 获得两个数组,这两个数组就是string的属性
        char v1[] = value;
        char v2[] = anotherString.value;

        int k = 0;
        while (k < lim) {
        //获取第K的字符,进行比较
            char c1 = v1[k];
            char c2 = v2[k];
            if (c1 != c2) {
            //Java使用的是Unicode编码,因此返回这两个字符的Unicode差值。
                return c1 - c2;
            }
            k++;
        }
        
        //如果前lim个字符都相同,那么就返回长度差。
        return len1 - len2;
    }

其实就是:
1、取得string的value数组
2、取得value数组里面的元素
3、按照unicode值进行比较
4、返回比较的值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,930评论 18 399
  • Tip:笔者马上毕业了,准备开始 Java 的进阶学习计划。于是打算先从 String 类的源码分析入手,作为后面...
    石先阅读 14,109评论 16 58
  • 早前看了孔浩老师的dwr与springmvc的整合视频,自己跟着动手把各种方式都练习了一下,遇到些问题,记录给自己...
    没意思先生1995阅读 4,954评论 0 2
  • 淡定是指对事物反应的一种理智表现,从容则更高一个层次,指“不过分在乎外界的看法,我做我认为对的事情”,从容不仅指心...
    思百纳阅读 3,998评论 0 1
  • 营养学是一门研究机体代谢与食物营养素之间的关系的一门学科。通过对营养学的历史、起源、发展、特征、层次等方面的描述,...
    小鹿_33阅读 2,669评论 0 1