返回
==,equals() 与 hashCode() 的使用
后端
2024-02-03 17:00:03
在 Java 编程中,使用 ==
运算符比较对象引用是否指向同一对象,而 equals()
方法比较两个对象的内容是否相同。hashCode()
方法返回对象的哈希码,它是一个整数,用于标识对象。
==
运算符
==
运算符用于比较两个引用是否指向同一对象。对于基本数据类型,它直接比较值。对于对象,它比较对象的引用,而不是对象的内容。
int a = 10;
int b = 10;
System.out.println(a == b); // true, a 和 b 指向相同的值
String str1 = "Hello";
String str2 = "Hello";
System.out.println(str1 == str2); // true, str1 和 str2 指向相同的字符串常量
Person person1 = new Person();
Person person2 = new Person();
System.out.println(person1 == person2); // false, person1 和 person2 指向不同的对象
equals()
方法
equals()
方法用于比较两个对象的实际内容是否相同。它通常被重写以自定义比较行为。
class Person {
private String name;
private int age;
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return name.equals(person.name) && age == person.age;
}
}
Person person1 = new Person();
person1.setName("John");
person1.setAge(30);
Person person2 = new Person();
person2.setName("John");
person2.setAge(30);
System.out.println(person1.equals(person2)); // true, person1 和 person2 内容相同
hashCode()
方法
hashCode()
方法返回对象的哈希码。哈希码是一个整数,用于标识对象。它通常用于数据结构中,例如哈希表。
class Person {
private String name;
private int age;
public int hashCode() {
return Objects.hash(name, age);
}
}
Person person1 = new Person();
person1.setName("John");
person1.setAge(30);
System.out.println(person1.hashCode()); // 返回一个整数哈希码
总结
- 使用
==
运算符比较对象引用。 - 使用
equals()
方法比较对象内容。 - 使用
hashCode()
方法获取对象的哈希码。