Javajavase

特点

  • Object类是所有Java类的基类,也就意味着所有的Java对象都拥有Object类的属性和方法
  • 如果在类的声明中未使用extends关键字指明其父类,则默认继承Object类
  • Object类的构造方法只有一个无参构造,这就揭示了,子类构造方法默认访问父类的构造是无参构造
  • 数组可以看成是一个特殊的类,它也是Object的子类

    1. System.out.println(arr.getClass().getSuperclass());

    方法

    **public boolean equals(Object obj)**

    • 指示其他对象是否与此对象“相等”
      • 这个方法默认情况下比较的是地址值,一般来说意义不大
      • 我们可以根据情况自己重写该方法,比较对象的成员变量值是否相同
    • ==和equals方法
      • ==:
        • 基本类型:比较的就是值是否相同
        • 引用类型:比较的就是地址值是否相同,类型无关报错
      • equals:
        • 引用类型:默认情况下比较的是地址值,不过可以根据情况重写该方法
        • 一般重写都是自动生成,比较对象的成员变量值是否相同

**public String toString()**

  • 返回该对象的字符串表示——但是这个信息是没有任何意义的,建议所有子类都重写该方法
  • Object类中toString方法的源码为

    1. public String toString() {
    2. return getClass().getName() + "@" + Integer.toHexString(hashCode());
    3. }
    • 根据如上源码得知,默认会返回“类名+@+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()**