JAVA中Object类的equals()方法的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/z249486888/article/details/83338286

先来看一下官方API中对Object类的equals()方法的介绍:

equals

public boolean equals(Object obj)

指示其他某个对象是否与此对象“相等”。

参数:

obj - 要与之比较的引用对象。

返回:

如果此对象与 obj 参数相同,则返回 true;否则返回 false

通俗的讲,就是将某个对象和引用对象比较是否相等,相等返回true否则返回false。其实际作用是判断两个对象的参数是否一样。

使用equals()时有两种情况:

1、当定义一个类时,若没有重写equals()方法,则调用父类Object的equals()方法,即判断两个对象的地址是否一样。

      下面的代码是equals()的源码

    public boolean equals(Object obj) {
        return (this == obj);
    }

2、当重写equals()方法时,重写为判断两个对象的参数是否一致。

public class AnimalDemo {
	public static void main(String[] args) {
		Cat ss = new Cat(1, 2);
		System.out.println(ss.equals(new Cat(1, 2)));
	}
}

当Cat方法没有重写equals()方法时,只要两个对象的引用地址不同,就返回为true。

public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Cat other = (Cat) obj;
		if (a != other.a)
			return false;
		if (b != other.b)
			return false;
		return true;
	}

重写Cat的equals()方法时,返回true。

这里有一个细节,equals(Object obj)的引用对象为Object类,而实际引用的均为Object的子类,即子类的上转型对象。

在equals()重写方法中Cat other = (Cat) obj;

意思是将obj下转型为Student类,如果此时obj是一个和Dog,那么没有办法下转型为一个Cat,则需要先判断obj是否为该类的对象。此处也可以使用obj instanceof Cat来判断obj是否为Cat的对象。

猜你喜欢

转载自blog.csdn.net/z249486888/article/details/83338286