• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
isuning
博客园    首页    新随笔    联系   管理    订阅  订阅
【Java源码分析】String 字符串比较 compareTo

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 转换每个字符
posted on 2022-05-01 22:16  吕布辕门  阅读(133)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3