Java字符串比较equals()和equalsIgnoreCase()的区别

1、使用equals( )方法比较两个字符串是否相等

用于比较两个独立对象的内存是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。

equals重写了Object
anObject:对比这个String对象

/**
 * 将此字符串与指定对象进行比较。
 * 其结果是true当且仅当该参数不是null并且是String对象,表示相同的字符串序	 
 * 列作为该对象
 *
 * @param  equals重写了Object
 */
public boolean equals(Object anObject) {
    if (this == anObject) {
        return true;
    }
    if (anObject instanceof String) {
        String anotherString = (String)anObject;
        int n = value.length;
        if (n == anotherString.value.length) {
            char v1[] = value;
            char v2[] = anotherString.value;
            int i = 0;
            while (n-- != 0) {
                if (v1[i] != v2[i])
                    return false;
                i++;
            }
            return true;
        }
    }
    return false;
}

2、equalsIgnoreCase()简单来说是忽略大小写,A-Z和a-z是一样的。
只能作为字符串之间的比较

如果以下至少一个为真,则这个字符c1和c2被认为是真:

  • 两个字符相同(与==操作符相比)
  • 将方法Character.toUpperCase(char)应用于每一个字符产生相同的结果
  • 将方法Character.toLowerCase(char)应用于每一个字符产生相同的结果
/**
 * 将此String与其它String比较,如果两个字符串长度相同,并且两个字符串响应的字符忽略大小写,则这两个字符串被认为是相等的
 *
 * @param  anotherString
 *         String将此String对比
 * 
 * @return  如果参数不为null则为true,它代表等效的String忽略大小写;否则为false
 */
public boolean equalsIgnoreCase(String anotherString) {
    return (this == anotherString) ? true
            : (anotherString != null)
            && (anotherString.value.length == value.length)
            && regionMatches(true, 0, anotherString, 0, value.length);
}

猜你喜欢

转载自blog.csdn.net/drsarah/article/details/106996281