本文首发于cartoon的博客
转载请注明出处:https://cartoonyu.github.io/cartoon-blog/post/java/object%E7%9A%84%E6%88%90%E5%91%98%E6%96%B9%E6%B3%95%E4%BB%A5%E5%8F%8A%E4%BD%9C%E7%94%A8/
前言
对的。这次也是面试题,又是有点懵逼的一道题,记得当时只答出了wait跟notify。。。
正文
学java的都知道,Object是所有类的父类,但是相信很多人都忽略掉Object中的成员方法(包括我)。
翻过官方文档后,发现其实Object类成员方法可以总结为以下几类
| 方法名 | 作用 | 注意 |
---|---|---|---|
多线程操作 | wait | 线程等待,线程进入阻塞状态 | / |
notify/notifyAll | 唤醒线程,线程回到就绪状态 | / | |
垃圾回收 | finalize | 通知垃圾收集器回收对象 | 只是提醒,回收时间仍由垃圾收集器决定 |
对象克隆 | clone | 克隆对象 | protected方法,不能被直接调用,若想实现克隆通过实现Cloneable重写clone方法实现 |
对象比较 | hashCode/equals | 判断对象时候相等 | hashCode相等,equals不一定相等;equals相等,hashCode一定相等 |
获取对象信息 | getClass | 获取对象所属类 | 在反射中比较常用 |
后话
其实Object类的很多方法都很实用,多线程同步,对象比较等等,但是平时自己比较少关注,可能是我菜鸡吧。
希望看到文章的你们能有所收获,也希望我以后被问到这个不会再懵逼。