equals(Object obj)具体用法
时间: 2023-10-30 10:07:16 浏览: 94
equals(Object obj)方法是Object类中的方法,它用于比较两个对象是否相等。
在默认情况下,equals()方法比较的是两个对象的引用是否相等,即判断两个对象是否指向内存中的同一个地址。这和使用"=="运算符进行比较是一样的。例如:
```java
String s1 = new String("Hello");
String s2 = new String("Hello");
System.out.println(s1.equals(s2)); // 输出false
System.out.println(s1 == s2); // 输出false
```
在上面的例子中,虽然s1和s2的内容相同,但它们指向的是不同的内存地址,因此equals()方法返回了false。
然而,很多类会重写equals()方法,以实现它们自定义的相等判断逻辑。通常情况下,我们需要重写equals()方法来比较对象的内容是否相等,而不仅仅是比较引用是否相等。例如:
```java
public class Person {
private String name;
private int age;
// 构造方法、getter和setter等省略
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
Person person = (Person) obj;
return age == person.age && Objects.equals(name, person.name);
}
}
```
在上面的例子中,重写了Person类的equals()方法来比较两个Person对象的name和age属性是否相等。
需要注意的是,在重写equals()方法时,通常也需要同时重写hashCode()方法,以保证两个相等的对象具有相同的哈希码值。这是因为在使用HashMap、HashSet等基于哈希表的集合类时,它们在判断对象是否相等时会首先比较哈希码值。
阅读全文