equals方法类中重写

来源:互联网 发布:网络销售渠道有哪2种 编辑:程序博客网 时间:2024/06/07 12:16

1.相等和同一

如果两个对象具有相同的类型以及相同的属性值,则称这两个对象相等。如果两个引用对象指的是同一个对像,则称这两个变量同一。Object类中定义的equals 函数原型为:public boolean equals(Object);他是判断两个对象是否同一,并不是是否相等。

2.equals方法

由于Object 类是所有类的最高基类,所有其他类都继承类Object类的equals()方法,定义原型如下:

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

在java中 “==” 是判断两个对象是否同一,而不是判断相等。因此Object类中的equals方法也是判断两个对象是否同一。要判断两个对象是否相等,就需要重写equals()方法。
equals方法底层相当于是==实现的,因为==比较的是这个变量的值,也就是地址引用,而equals方法把==实现的更加细致,比较对象的内容,所以重写equals方法

3 equals()方法的重写:

class Person{    public String name;    public int age;    public Person(String name, int age){        this.name = name;        this.age = age;    }    @Override    public boolean equals(Object x){        if(this.getClass() != x.getClass())            return false;        Person p = (Person)x;        return (this.name == p.name) &&                (this.age == p.age);    }}public class Test{    public static void main(String [] args){        Person p1 = new Person("Lily",23);        Person p2 = new Person("Lily",23);        System.out.println(p1.equals(p2));    }}
原创粉丝点击