StringUtils中equals()和equalsIgnoreCase()源码中是怎么实现忽略大小写比较?

发布于 2022-09-07 15:55:02 字数 1234 浏览 12 评论 0

1、在使用org.apache.commons.lang3.StringUtils工具类的时候,查看了一下equals和equalsIgnoreCase两个方法的源码,想看一下是怎么实现忽略大小写比较的,但是发现,两个方法比较的内容基本是一样的,有哪位能讲解一下,两个方法中源码有什么本质上的区别吗?
2、我用的jar包是:commons-lang3-3.6.jar,两个方法的源码如下所示:

    public static boolean equals(CharSequence cs1, CharSequence cs2) {
        if (cs1 == cs2) {
            return true;
        } else if (cs1 != null && cs2 != null) {
            if (cs1.length() != cs2.length()) {
                return false;
            } else {
                return cs1 instanceof String && cs2 instanceof String ? cs1.equals(cs2) : CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, cs1.length());
            }
        } else {
            return false;
        }
    }
    public static boolean equalsIgnoreCase(CharSequence str1, CharSequence str2) {
        if (str1 != null && str2 != null) {
            if (str1 == str2) {
                return true;
            } else {
                return str1.length() != str2.length() ? false : CharSequenceUtils.regionMatches(str1, true, 0, str2, 0, str1.length());
            }
        } else {
            return str1 == str2;
        }
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

风启觞 2022-09-14 15:55:02

regionMatches(final CharSequence cs, final boolean ignoreCase, final int thisStart,

        final CharSequence substring, final int start, final int length)方法的第二个参数表示是否区不分大小写, equals方法传入的是false,equalsIgnoreCase传入的是true.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文