0
点赞
收藏
分享

微信扫一扫

【Java源码分析】String 字符串比较 compareTo

天际孤狼 2022-04-22 阅读 40
java

compareTo()

compareTo() 方法用于两种方式的比较:

  • 字符串与对象进行比较。
  • 按字典顺序比较两个字符串。

返回值

返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的长度差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。

  • 如果参数字符串等于此字符串,则返回值 0;
  • 如果此字符串小于字符串参数,则返回一个小于 0 的值;
  • 如果此字符串大于字符串参数,则返回一个大于 0 的值。

实例

public class Test {
 
    public static void main(String args[]) {
        String str1 = "String1";
        String str2 = "String3";
        String str3 = "String11";
        int result = str1.compareTo( str2 );
        System.out.println(result);
        int result1 = str3.compareTo( str1 );
        System.out.println(result1);
    }
}

以上程序执行结果为:

-2
1
源码
 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;//比较对应字符的大小(ASCII码顺序)
            }
            k++;
        }
        return len1 - len2;//所有字符相等,取长度的差值
    }

compareToIgnoreCase()

按字典顺序比较两个字符串,忽略大小写差异。

Character.toUpperCase 转换每个字符
举报

相关推荐

0 条评论