- 根据比较类型来解释“==”
- 基本数据类型:比较值是否相等
- 引用数据类型:比较内存中的地址是否相同。
- 是否覆盖equals方法来解释
- 没有覆盖equals方法,比较对象的地址引用是否同一个地址。
- 覆盖了equals方法,根据具体代码确定,一般都是判断内容是否相等来判断对象是否相等。例如对象为person , 我们覆盖equals方法,规定姓名,性别,年龄相同则为对象相等。
public class Person{ private String name; private String gender; private int age; private String address; public Person() { } public Person(String name, String gender, int age,String address) { this.name = name; this.gender = gender; this.age = age; this.address=address; } @Override public boolean equals(Object obj) { //对象是否为空 if (obj == null) { return false; } //判断是否类型相同 if (this.getClass() != obj.getClass()) { return false; } //是否同一个对象 if (this == obj) { return true; } Person person = (Person) obj; return name.equals(person.name) && gender.equals(person.gender) && age== person.age; } public static void main(String[] args) { Person p1 = new Person("张三", "男", 23,"上海浦东"); Person p2 = new Person("张三", "男", 23, "上海浦西"); System.out.println(p1.equals(p2));//结果为true } }
equals 和“==“的区别
最新推荐文章于 2025-04-18 15:13:21 发布
本文详细解析了Java中对象比较的基本原理,包括使用“==”进行地址比较和通过equals方法进行内容比较的区别。并通过一个具体的Person类例子展示了如何正确地重写equals方法来实现对象属性的精确对比。

2181

被折叠的 条评论
为什么被折叠?



