Object类有哪些重要方法?
请列举java.lang.Object类中所有非native方法及重要native方法的用途,包括equals()、hashCode()、toString()、clone()、finalize()、getClass()、notify()/wait()等。
回答
小字辈
Object类是所有类的根父类,包含以下重要方法:
1. equals(Object obj):比较对象是否相等,默认使用==(比较引用)。子类通常重写。
2. hashCode():返回对象的哈希码,默认基于内存地址。与equals协定绑定。
3. toString():返回对象的字符串表示,默认 类名@hashCode十六进制。
4. clone():创建并返回对象的浅拷贝。需实现Cloneable接口,否则抛CloneNotSupportedException。
5. finalize():GC回收对象前调用(Java 9已弃用,不推荐使用)。
6. getClass():返回对象的运行时Class对象(native方法,但不能通过反射修改)。
7. notify()/notifyAll()/wait()(三个重载):线程间通信机制。必须在synchronized块中调用。
- wait():释放锁并等待
- notify():随机唤醒一个等待线程
- notifyAll():唤醒所有等待线程
8. registerNatives():注册native方法实现,类加载时执行。
注意:finalize()已被标记为弃用,推荐使用try-with-resources或Cleaner代替。