一、equals方法概述
在Java中,equals方法是Object类中的一个方法,用于比较两个对象是否相等。在默认情况下,equals方法比较的是两个对象是否引用同一个内存地址,也就是说比较的是两个对象的地址,如果两个对象的地址相同,那么这两个对象就相等,反之则不相等。但是在实际开发中,我们一般需要比较的是两个对象的属性是否相同,这时候就需要我们自定义equals方法,以便满足我们的需求。
二、equals方法的默认实现
在Java中,如果我们没有自定义equals方法,那么默认的equals方法就是比较两个对象的地址是否相同,其源码如下:
public boolean equals(Object obj) { return (this == obj); }
可以看出,equals方法的默认实现就是比较两个对象的地址是否相同。
三、equals方法的重写
在实际开发中,我们需要比较的往往是对象的属性是否相同,例如比较两个Person对象是否相同,我们一般会比较这两个Person对象的name和age属性,那么我们需要自定义equals方法,重写默认的equals方法,在新的equals方法中比较两个对象的属性是否相同。
四、equals方法的实现步骤
1、比较对象是否为同一对象
首先需要判断两个对象是否为同一对象,如果是同一对象,那么这两个对象肯定是相等的,无需做后续比较,直接返回true。
public boolean equals(Object obj){ if(this == obj){ return true; } return false; }
2、比较对象类型
接下来需要进行对象类型的比较,如果两个对象的类型不同,那么这两个对象肯定不相等,因为不同类型的对象之间无法进行属性的比较。
public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null || this.getClass() != obj.getClass()){ return false; } return false; }
3、比较对象的属性
最后需要比较对象的属性是否相等,如果两个对象的属性相同,那么这两个对象就相等,反之则不相等。
public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null || this.getClass() != obj.getClass()){ return false; } Person person = (Person) obj; if(this.name.equals(person.getName()) && this.age == person.getAge()){ return true; } return false; }
五、完整示例代码
下面是一个完整的Person类的示例,包含了equals方法的重写。
public class Person { private String name; private int age; public Person(String name, int age){ this.name = name; this.age = age; } public String getName(){ return name; } public void setName(String name){ this.name = name; } public int getAge(){ return age; } public void setAge(int age){ this.age = age; } @Override public boolean equals(Object obj){ if(this == obj){ return true; } if(obj == null || this.getClass() != obj.getClass()){ return false; } Person person = (Person) obj; if(this.name.equals(person.getName()) && this.age == person.getAge()){ return true; } return false; } }
六、equals方法的使用
在实际开发中,我们经常需要使用equals方法来比较两个对象是否相等,例如:
public static void main(String[] args) { Person person1 = new Person("张三", 20); Person person2 = new Person("张三", 20); if(person1.equals(person2)){ System.out.println("person1和person2相等"); }else{ System.out.println("person1和person2不相等"); } }
结果为:
person1和person2相等
七、总结
在Java中,equals方法是用于比较两个对象是否相等的方法。在默认情况下,equals方法比较的是两个对象是否引用同一个内存地址,也就是说比较的是两个对象的地址,如果两个对象的地址相同,那么这两个对象就相等,反之则不相等。在实际开发中,一般需要比较的是两个对象的属性是否相同,这时候我们需要自定义equals方法,并重写默认的equals方法,在新的equals方法中比较两个对象的属性是否相同。equals方法的实现步骤为:首先比较两个对象是否为同一对象;其次比较对象的类型;最后比较对象的属性。通过equals方法的重写,我们可以实现对象的属性比较,满足我们实际开发中的需求。