一、面向对象三大特性
封装、继承、多态
二、类的定义和创建对象
1 | //Student.java |
三、equals和hashCode
- 在Java中,
Object类提供了两个重要的方法:equals()和hashCode()。这两个方法经常在集合框架(如HashSet、HashMap)中。 equals(Object obj):默认实现是比较两个对象的内存地址(即==比较)。只有当两个引用指向同一个对象时,才返回true。hashCode():默认返回对象的内存地址转换成的整数(不同JVM实现可能不同)。
1 | Object obj1 = new Object(); |
什么时候需要重写
当希望两个对象在逻辑上相等(例如,根据属性值判断)时,就需要重写 equals()。典型的场景是实体类(比如 Person、Student)。
重写 equals() 时必须同时重写 hashCode()
- 一致性:只要对象属性没有改变,多次调用 hashCode() 应返回相同的整数。
- 如果 equals() 返回 true,那么两个对象的 hashCode() 必须相等。
- 如果 equals() 返回 false,hashCode() 不一定要不同,但尽量不同以提高集合性能。
1 | public class Person { |