特点
- Object类是所有Java类的基类,也就意味着所有的Java对象都拥有Object类的属性和方法
- 如果在类的声明中未使用extends关键字指明其父类,则默认继承Object类
- Object类的构造方法只有一个无参构造,这就揭示了,子类构造方法默认访问父类的构造是无参构造
数组可以看成是一个特殊的类,它也是Object的子类
System.out.println(arr.getClass().getSuperclass());
方法
**public boolean equals(Object obj)**
- 指示其他对象是否与此对象“相等”
- 这个方法默认情况下比较的是地址值,一般来说意义不大
- 我们可以根据情况自己重写该方法,比较对象的成员变量值是否相同
- ==和equals方法
- ==:
- 基本类型:比较的就是值是否相同
- 引用类型:比较的就是地址值是否相同,类型无关报错
- equals:
- 引用类型:默认情况下比较的是地址值,不过可以根据情况重写该方法
- 一般重写都是自动生成,比较对象的成员变量值是否相同
- ==:
**public String toString()**
- 返回该对象的字符串表示——但是这个信息是没有任何意义的,建议所有子类都重写该方法
Object类中toString方法的源码为
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
- 根据如上源码得知,默认会返回“类名+@+16进制的hashcode”
- 在打印输出或者用字符串连接对象时,会自动调用该对象的toString()方法
**public int hashCode()**
- 返回该对象的哈希码值
**public final Class getClass()**
- 返回此Object的字节码对象
- Class类的方法:public String getName()——以String的形式返回此Class对象所表示的实体名称(类、接口、数组类、基本类型或void)
**protect void finalize() throws Throwable**
- 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。用于垃圾回收,但不确定回收时间
**protected Object clone()**
- 创建并返回此对象的一个副本。包括成员变量的数据复制,它和两个引用指向同一个对象是有区别的
- Cloneable:此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。这个接口是标记接口(无方法),告诉我们实现该接口的类就可以实现对象的复制了
**public final void wait() throws InterruptedException**
**public final void wait(long timeout) throws InterruptedException**
**public final void wait(long timeout, int nanos) throws InterruptedException**
**public final void notify()**
**public final void notifyAll()**