一、Object 是什么?
开玩笑:类的祖宗,哈哈
- 类 Object 是类层次结构的根类。
- 每个类都使用 Object 作为超类。
- 所有对象(包括数组)都实现这个类的方法。
二、Object 的构造方法
- Object()
三、Object 的方法
修饰符 | 方法名 | 方法描述 |
---|---|---|
protected | Object clone() | 创建并返回此对象的一个副本 |
boolean | equals(Object obj) | 指示其他某个对象是否与此对象“相等” |
protected | void finalize() | 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法 |
Class<?> | getClass() | 返回此 Object 的运行时类 |
int | hashCode() | 返回该对象的哈希码值 |
void | notify() | 唤醒在此对象监视器上等待的单个线程 |
void | notifyAll() | 唤醒在此对象监视器上等待的所有线程 |
String | toString() | 返回该对象的字符串表示 |
void | wait() | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待 |
void | wait(long timeout) | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量前,导致当前线程等待 |
void | wait(long timeout, int nanos) | 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量前,导致当前线程等待 |
四、Object 中重要方法
1.equals(Object obj)
- 默认Object类的equals底层使用==判断对象的地址是否相等
日常中我们判断一个人是否为同一个人,就看他的名字,身份证号,然而图中两个对象,名字一样,身份证号一样,调用equals判断,却是false
- 因为每次创建对象,地址值都不一样,所以使用Object的equals每次都是false
- 因此这样做好像没么用
那么我们一般判断一个对象是否相同,是通过判断对象属性是否相等而决定对象是否相同,所以子类基本上都要重写equals
- 重写的话,可以使用IDEA已经重写好的equal方法
- 重写后,就判断成功了
2. toString()方法
- 方法体
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
- 演示
- 通过上图发现toString() 字体为灰色并且不调用toString() 也是输出地址值,IDEA 提示使用重复了,说明输出语句输出对象,默认会调用toString()
- 因此打印地址值没意义,每个子类重写toString,打印对象内容(属性)
- 重写后,就可以打印属性了
最后
如果感觉有收获的话,点个赞 👍🏻 吧。
❤️❤️❤️本人菜鸟修行期,如有错误,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍