2020-04-26:String:compareTo的原理

源码:
public int compareTo(String anotherString) {
int len1 = value.length;
int len2 = anotherString.value.length;
//比较两个字符串的长度, 找出最小值;
int lim = Math.min(len1, len2);
char v1[] = value;
char v2[] = anotherString.value;

    int k = 0;
    while (k < lim) {
        char c1 = v1[k];
        char c2 = v2[k];

//比较最小长度中的字符是否相同
if (c1 != c2) {
return c1 - c2;
}
k++;
}
//如果最小长度的字符都相同, 再比较两个字符串的长度是否相同
return len1 - len2;
}
还有一种是忽略大小写的场景人认为A和a是相同的,就得用下面这种方法
public int compare(String s1, String s2) {
int n1 = s1.length();
int n2 = s2.length();
//比较两个字符串的长度,找出最小值
int min = Math.min(n1, n2);
for (int i = 0; i < min; i++) {
char c1 = s1.charAt(i);
char c2 = s2.charAt(i);
if (c1 != c2) {
//转成大写比较
c1 = Character.toUpperCase(c1);
c2 = Character.toUpperCase(c2);
if (c1 != c2) {
//如果转成大写比较不一样,就转成小写比较
c1 = Character.toLowerCase(c1);
c2 = Character.toLowerCase(c2);
//上面两个if确定了不是A,a这样子的字符,直接比较大小
if (c1 != c2) {
// No overflow because of numeric promotion
return c1 - c2;
}
}
}
}
return n1 - n2;
}

比较详细的介绍:(作者:java菜鸟进阶
链接:https://www.jianshu.com/p/89e64fd575b6)

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 从一段代码说起: public void stringTest(){ String a = "a"+"b"+1...
    df50382ebd44阅读 212评论 0赞 0
  • String 类的常用方法 compareTo方法 用途:比较两字符串,返回值为整型 源码:public int ...
    FoxLayla阅读 582评论 0赞 0
  • Java学习随笔8 List排序 这里的list默认是ArrayLIst 首先ArrayList有两种sort方法...
    nikown阅读 265评论 0赞 0
  • 最近又陷入精神空虚期。把喜欢的玄幻小说大主宰翻出来看。喜欢张扬驰骋的情节,肆意恩仇的人生。 有些情节是比较吸引人的...
    桦菁阅读 290评论 0赞 3
  • 昨天把《结构思考力》看完,想着把这本书总结一下作为每日一更的作业,手机打字的时候看到输入法中有语音速记的功能,心想...
    小盏_0115阅读 135评论 0赞 0

友情链接更多精彩内容