java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > String类的compareTo方法比较规则

使用String类的compareTo方法比较规则详解

作者:爆米花759

这篇文章主要介绍了使用String类的compareTo方法比较规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

String类的compareTo方法比较规则

1、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;
}
private final char value[]; //String类使用char[]来保存字符串

2、代码分析

A、首先会将调用compareTo方法的 str1 的长度保存到 len1 中,然后str2将作为实参传入方法给到anotherString,并将anotherString长度保存到 len2 中,即:str2的长度。

B、然后调用 Math.min(len1, len2) 方法,得到长度中的最小值,用于决定后续字符依次循环比较的次数。

C、让 v1 指向 str1 的 value数组,v2 指向 str2 的 value数组。

D、进入while循环进行单个字符依次循环比较,循环条件 k < lim,k 从 0 开始,因为数组下标从0开始,因此是小于 lim。

E、每次都将 v1 和 v2 中相同索引位置的字符取出来比较是否相同:

a、如果不相同:则直接结束compareTo方法的调用,直接返回两个字符的ascii码差值;

b、如果相同:则继续比较下一个字符:

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文