Object类中常用的方法
- getClass():获取类的 class 对象
- hashCode():获取对象的 hashCode 值,支持此方法是为了提高哈希表的性能
- equals():判断两个对象是否相等,比较的是值和地址,子类可重写进行自定义
- clone():克隆方法
- toString():获取对象的字符串表示,如果没有重写,应用对象将打印地址值
- notify():随机选择一个在该对象上调用 wait 方法的线程,解除其阻塞状态。该方法只能在同步方法或者同步代码块中调用,如果当前线程不是锁的持有者,会抛出一个 IllegalMonitorStateException 异常
- notifyAll(): 解除所有在该对象上调用 wait 方法的线程的阻塞状态。该方法只能在同步方法或者同步代码块中调用,如果当前线程不是锁的持有者,会抛出一个 IllegalMonitorStateException 异常
- wait():使当前线程进入等待状态,直到被其他线程通过 notify
() 或者 notifyAll() 唤醒。该方法只能在同步方法或者同步代码块中调用,如果当前线程不是锁的持有者,会抛出一个 IllegalMonitorStateException 异常
- finalize():对象回收时调用
- 实现 clone() 方法需要实现 Cloneable 接口,否则会抛出 CloneNotSupportedException 异常
- Object 中的 clone() 方法是一个 native 方法,使用操作系统底层的语言实现,执行效率更高
- clone() 为浅克隆
- Cloneable 接口和 Serializable 接口的代码非常简单,都是空接口,也被称为标识接口,标识接口中没有任何方法定义,作用是告诉 JRE 这些接口的实现类是否具有某些功能,比如是否支持克隆、是否支持序列化等