1. Object 类概述
(1)Object 类的全类名为 java.lang.Object 。
(2)Object 类是所有 Java 类的根父类,如果在类的声明中未使用 extends 关键字指明其父类,则此类默认继承 Object 类。即所有的 Java 类(除 Object 类本身)都直接或间接继承于 Object 类
(3)由于 Object 类是所有 Java 类的根父类和继承性的原因,故 Object 类中的功能 ( 属性、方法) 具有通用性。
────────────────────────────────────────────────────────────
2. Object 类中的主要结构
(1)属性:无
(2)方法:Object()、equals()、toString()、getClass()、hashCode()、clone()、finalize()、wait()、notify()、notifyAll()
主要方法介绍 | 类型 | 描述 |
public Object() | 构造 | 构造器,Object 类只声明了一个空参的构造器 |
public boolean equals(Object obj) | 普通 | 根据两个对象的地址值比较两个对象是否相同 |
public native int hashCode(); | 普通 | 取得 Hash 码 |
public String toString() | 普通 | 对象输出时调用 |
────────────────────────────────────────────────────────────
3. equals():方法
(1)Object 类中 equals() 的定义
public boolean equals(object obi) {
return (this ==obj);
}
(2)equals 方法适用于引用数据类型,用于比较两个对象的地址值是否相同。
(3)类可以重写 equals() 方法,用于比较两个对象的指定内容是否都相等,像String、Date、File、包装类等都重写了 Object 类中的 equals() 方法。重写以后,比较的不是两个引用的地址是否相同,而是比较两个对象的实体内容是否相同。
(4)重写 equals() 方法的原则
对称性:如果 x.equals(y) 返回为 true,那么 y.equals(x) 也应该返回是 true。 |
自反性:x.equals(x) 必须返回是 true。 |
传递性:如果 x.equals(y) 返回是 true,而且 y.equals(z) 返回是 true, 那么 z.equals(x) 也应该返回是 true。 |
一致性:如果 x.equals(y) 返回是 true,只要 x 和 y 内容一直不变,不管重复 x.equals(y) 多少次,返回都是 true。 |
任何情况下,x.equals(null),永远返回是 false; x.equals(和 x 不同类型的对象) 永远返回是 false。 |
────────────────────────────────────────────────────────────
4. hashCode() 方法
(1)Java 强制规定:如果两个对象通过 equals 方法比较返回为 true,则这两个对象的 Hash 值也必须相同。
(2)重写 hashCode() 方法:通过 Objects 工具类的 hash() 方法
────────────────────────────────────────────────────────────
5. toString() 方法
(1)Object 类中 toString() 的定义
public string toString(){
return getclass( ).getName() +"@" + Integer.toHexString(hashCode());
}
(2)当输出一个对象的引用时,实际上就是调用当前对象的 toString() 方法
(3)toString() 方法在 Object 类中定义,其返回值是 String 类型,返回类名和它的引用地址。 在进行 String 与其它类型数据的连接操作时,自动调用 toString() 方法
(4)用户可以根据需要在自定义类型中重写 toString()方法,如 String、Date、File、包装类等重写了 toString() 方法,返回字符串的值。
(5)基本类型数据在转换为 String 类型时,自动调用了对应包装类的 toString() 方法