Java Object 类常用方法全讲解

Object 是 Java 中所有类的根父类,任何对象都直接 / 间接继承它,所有对象都能调用它提供的方法。

一、全部核心常用方法清单

  1. toString()
  2. equals(Object obj)
  3. hashCode()
  4. getClass()
  5. clone()
  6. wait() / wait(long) / wait(long,int)
  7. notify() / notifyAll()
  8. finalize()(已废弃,仅了解)

1. toString()

作用

返回对象的字符串描述,打印对象时默认自动调用。

默认实现

java

复制代码
public String toString() {
    return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

输出格式:类名@哈希十六进制,可读性极差,业务实体必须重写

重写示例

java

复制代码
@Override
public String toString() {
    return "FlowerNote{id=" + id + ", title=" + title + ", userId=" + userId + "}";
}

2. equals(Object o)

作用

对比两个对象是否逻辑相等

默认实现(底层 ==)

java

复制代码
public boolean equals(Object obj) {
    return (this == obj);
}
  • ==:基本类型比值,引用类型比内存地址
  • 需求:实体类需要按属性判断相等,必须重写 equals,配套重写 hashCode

标准重写规范

  1. 判断是否是自身 == o,直接返回 true
  2. 判断对象是否为 null、类是否一致
  3. 强转后逐个对比成员变量

3. hashCode()

作用

返回对象哈希值,用于哈希容器:HashMap、HashSet、Redis 缓存等。

规则(强制约束)

  1. 两个对象 equals() == true,它们的 hashCode 必须相等;
  2. hashCode 相等,equals 不一定相等(哈希碰撞);
  3. 不重写时,返回对象内存地址换算数字。

开发规范:重写 equals 必须同步重写 hashCode,否则存入哈希集合会失效。

4. getClass()

作用

返回当前对象的运行时 Class 对象,反射核心方法

特点

  • final 修饰,不能重写
  • 区分编译时类型和运行时真实类型。

java

复制代码
FlowerNote note = new FlowerNote();
Class<?> clazz = note.getClass();
System.out.println(clazz.getName()); // 输出全类名

结合反射:动态创建对象、调用方法、读取属性。

5. clone()

作用

快速复制对象,生成新副本,分为浅拷贝、深拷贝

限制

  1. 方法是 protected,外部不能直接调用;
  2. 类必须实现 Cloneable 标记接口,否则抛 CloneNotSupportedException

浅拷贝默认规则

基本类型直接复制值;引用类型只复制地址,新旧对象共用同一个引用对象。

6. wait () /notify () /notifyAll () 【多线程】

使用前提:必须在 synchronized 同步代码块内调用

  1. wait():释放锁,让当前线程进入等待队列,等待被唤醒;
  2. notify():随机唤醒一个等待该对象锁的线程;
  3. notifyAll():唤醒所有等待该对象锁的线程;

适用场景:生产者消费者、消息队列(你的项目 RocketMQ 底层同步思想)。

7. finalize()

作用

对象被 GC 回收前触发执行,用于释放资源。

现状

Java9 开始标记为 @Deprecated不推荐使用,资源释放改用 try-with-resources。


高频面试重点总结

  1. 所有 Java 对象都继承 Object,无需手动 extends;
  2. toString 打印日志必备,实体一律重写;
  3. equals + hashCode 成对重写,哈希集合必用;
  4. getClass() 反射基石,final 不可重写;
  5. clone() 需要实现 Cloneable,区分深浅拷贝;
  6. wait/notify 配套 synchronized,用于线程间通信;
  7. finalize 已废弃,不用记实现。
相关推荐
Pluchon13 小时前
Java个人综合项目——萌部落社区V2.0
java·python·spring·spring cloud·postman·idea
梦雨生生13 小时前
java开发工具(学习第一天)
java·开发语言·学习
她说可以呀14 小时前
Spring-ai-alibaba文生图
java·人工智能·spring
啊啊啊啊啊!!!!15 小时前
【c++】stack和queue的接口使用以及底层实现
开发语言·c++
松仔log16 小时前
Java中级——组合和继承
android·java·开发语言
不才不才不不才16 小时前
Spring 源码系列(16): doDispatch 全流程——一次请求的主干链路
java·后端·spring
snow@li16 小时前
HikariCP:高性能数据库连接池全景深入梳理
java·数据库
edwarddamon17 小时前
Spring Cloud 配置热更新与 Bean 代理机制梳理
java·后端
Raas10017 小时前
MAIGateway,魔芋企业级AI网关的FinAPI成本竞争力设计
java·后端·网关·api网关·魔芋ai·finapi·mai gateway
(Charon)17 小时前
【C++】锁与原子操作(四):自旋锁的完整实现与性能优化
c语言·开发语言·c++