equals

Posted top啦它

tags:

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

基本类型没有equals方法。
但是这些基本类型的包装类具有equals方法。

Objects中的equals

    public boolean equals(Object obj) 
    //判断是不是同一个引用对象,而不是对象中定义变量的内容。
        return (this == obj);
    

eg:

public class Car 
    Integer a;

    public Car(Integer a) 
        this.a = a;
    

    public static void main(String[] args) 
        Car xiaoming = new Car(1);
        Car mingxiao = new Car(1);
        System.out.println(xiaoming.equals(mingxiao));
        Car ingmxiao = xiaoming;
        System.out.println(xiaoming.equals(ingmxiao));
    

输出结果:

false
true

如果希望根据对象中变量的值进行判断的话,可以重写equals(),如下。

package bb;

public class Car 
    Integer a;

    public Car(Integer a) 
        this.a = a;
    

    public static void main(String[] args) 
        Car xiaoming = new Car(1);
        Car mingxiao = new Car(1);
        System.out.println(xiaoming.equals(mingxiao));
        Car ingmxiao = xiaoming;
        System.out.println(xiaoming.equals(ingmxiao));
    

    @Override
    public boolean equals(Object obj) 
        if (this == obj)
            return true;
        
        Car equalsObj = (Car) obj;
        if (this.a == equalsObj.a)
            return true;
        
        return false;
    

true
true

Integer中的equals

    public boolean equals(Object obj) 
        if (obj instanceof Integer) //先判断是否是Integer类型,如果是的话,才会进行下一步判断。
            return value == ((Integer)obj).intValue();
        
        return false;
    
public class Car1 
    public static void main(String[] args) 
        Integer a = 1;
        Integer b = 1;
        boolean equals = a.equals(b);
        System.out.println(equals);
    

输出

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;
    
public class Car1 
    public static void main(String[] args) 
        String a = "hahaha";
        String b = "hahaha";
        System.out.println(a.equals(b));
    

true

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

equals 的用法

如何实现 equals 方法

与NULL比较使用==还是equals

js 里面有equals方法吗

equals方法

重写equals 方法的注意事项