java中equals和equalsignorecase的区别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中equals和equalsignorecase的区别相关的知识,希望对你有一定的参考价值。

equals和equalsignorecase的区别和使用

1、使用equals( )方法比较两个字符串是否相等。它具有如下的一般形式:

boolean equals(Object str)


这里str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它返回true,否则返回false。这种比较是区分大小写的。


2、为了执行忽略大小写的比较,可以调用equalsIgnoreCase( )方法。当比较两个字符串时,它会认为A-Z和a-z是一样的。其一般形式如下:


boolean equalsIgnoreCase(String str)


这里,str是一个用来与调用字符串(String)对象做比较的字符串(String)对象。如果两个字符串具有相同的字符和长度,它也返回true,否则返回false。


下面的例子说明了equals( )和equalsIgnoreCase( )方法:

 

class equalsDemo 
public static void main(String args[]) 
String s1 = "Hello";
String s2 = "Hello";
String s3 = "Good-bye";
String s4 = "HELLO";
System.out.println(s1 + " equals " + s2 + " -> " +
s1.equals(s2));
System.out.println(s1 + " equals " + s3 + " -> " +
s1.equals(s3));
System.out.println(s1 + " equals " + s4 + " -> " +
s1.equals(s4));
System.out.println(s1 + " equalsIgnoreCase " + s4 + " -> " +
s1.equalsIgnoreCase(s4));

   


该程序的输出如下所示:


Hello equals Hello -> true

Hello equals Good-bye -> false

Hello equals HELLO -> false

Hello equalsIgnoreCase HELLO -> true

参考技术A equals比较时,要比较大小写是否相同,
而后者,忽略了大小写,ignore就是忽略的意思
如,abc与Abc,前者返回false,后者返回true
参考技术B equals是比较2个字符串是否相等的,区分大小写 equalsignorecase功能一样,但是不区分大小写 参考技术C "a".equals("a")的结果为true,但"A".equals("a")为false"a".equalsignorecase("a")的结果为true,"A".equalsignorecase("a")的结果为true 参考技术D 区别如下:
1、String.equals()对大小写敏感
2、String.equalsIgnoreCase()忽略大小写
例如:"ABC".equals("abc")是false
"ABC".equalsIgnoreCase("abc")为ture

Java中 == 和 equals() equals() 和 hashCode()

记住三句话

1. 语义上:==指的是内存引用一样。equals是指的是逻辑相等。逻辑相等具体的意思由编写者决定(即在引用类型中,"=="是比较两个引用是否指向堆内存里的同一个地址(同一个对象),而equals,

equlas()方法的正确理解应该是:判断两个对象是否相等。那么判断对象相等的标尺又是什么?

如上,在object类中,此标尺即为==。当然,这个标尺不是固定的,其他类中可以按照实际的需要对此标尺含义进行重定义)。

2. 默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。
 public boolean equals(Object obj) {
        return (this == obj);
    }

3. 最典型equals已经被override的例子是String; String中的字符串文本相等则视为逻辑相等(s1.equals(s2)==true)。

String#equals:

 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;
    }

 

以上是关于java中equals和equalsignorecase的区别的主要内容,如果未能解决你的问题,请参考以下文章

在java中,关于equals(),和hashCode()的重写问题。

JAVA中的equals()

java中equals和equalsignorecase的区别

java中equals和equalsignorecase的区别

[转]Java中==和equals的区别,equals和hashCode的区别

Java中 == 和 equals() equals() 和 hashCode()