Java学习笔记-Object类

2016年03月10日

Java学习笔记-Object类

Note:参阅书籍《Core Java,Volume I:Fundamentals》

Object类的说明

  • Object类是Java中所有类的最终祖先,在Java中每个类都是由它扩展而来;
  • 如果没有明确的指出超类,Object就被认为是这个类的超类。class A extends Object是不必要的;
  • 可以使用Object类型的变量引用任何类型的对象,Object obj = new A();
  • 在Java中,只有基本类型(primitive types)不是对象,例如:数值、字符和布尔类型的值都不是对象。所有的数组类型,不管是对象数组还是基本类型的数组都扩展于Object类。

Object类中的方法

  • boolean equals(Object otherObject)
    比较两个对象是否相等,如果两个对象指向同一块存储区域,方法返回true;否则返回false。在自定义的类中,应该覆盖这个方法。
  • int hashCode()
    返回对象的散列码。散列码可以是任意的整数,包括正数或负数。两个相等的对象要求返回相等的散列码,但是散列码相同不一定是相等的对象。
  • Class getClass()
    返回包含对象信息的类对象。
  • String toString()
    返回描述该对象值的字符串。在自定义的类中,应该覆盖这个方法。
  • Object clone()
    创建一个对象的副本。JRE将为新实例分配存储空间,并将当前的对象复制到这块存储区域中。
  • void notifyAll()
    解除那些在该对象上调用wait方法的线程的阻塞状态。该方法只能在同步方法或同步块内部调用。如果当前线程不是对象锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
  • void notify()
    随机选择一个在该对象上调用wait方法的线程,解除其阻塞状态。该方法只能在一个同步方法或同步块这中调用。如果当前线程不是对象锁的持有者,该方法抛出一个IlegalMonitorStateException异常。
  • void wait()
    导致线程进入等待状态直到它被通知。该方法只能在一个同步方法中调用。如果当前线程不是对象锁的持有者,该方法抛出一个IllegalMonitorStateException异常。
  • void wait(long millis) / wait(long millis, int nanos)
    导致线程进入等待状态直到它被通知或者经过指定的时间。millis 毫秒数; nanos 纳秒数。