本文首发于 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 类的很多方法都很实用,多线程同步,对象比较等等,但是平时自己比较少关注,可能是我菜鸡。
希望看到文章的你们能有所收获,也希望我以后被问到这个不会再懵逼。