Java中object类常用方法及应用场景详解

 更新时间:2025年04月30日 08:25:42   作者:萌新下岸多多关照  
这篇文章主要介绍了Java中object类常用方法及应用场景的相关资料,正确重写这些方法是面向对象设计的基本要求,有助于避免踩坑并提高代码质量,需要的朋友可以参考下

在Java中,Object 类是所有类的根父类,其提供的方法会被所有子类继承。以下是Object类的常用方法及其典型应用场景:

1. toString()

  • 作用:返回对象的字符串表示(默认格式:类名@哈希码)。

  • 重写场景

    • 打印对象时需要可读性更高的信息(如日志、调试)。

    • 集合的System.out.println()输出依赖元素的toString()

  • 示例

    @Override
    public String toString() {
        return "Person{name='" + name + "', age=" + age + "}";
    }

2. equals(Object obj)

  • 作用:比较两个对象是否“逻辑相等”(默认比较内存地址,即==)。

  • 重写场景

    • 需要根据对象内容(而非地址)判断相等性(如值对象、DTO)。

    • 集合类(如HashSetArrayList.contains())依赖此方法。

  • 规则

    • 必须重写hashCode()以保证一致性(若equals返回truehashCode必须相同)。

    • 满足自反性、对称性、传递性、一致性。

  • 示例

    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

3. hashCode()

  • 作用:返回对象的哈希码(默认返回内存地址的哈希值)。

  • 重写场景

    • 对象作为HashMap的键或HashSet的元素时。

    • 必须与equals()逻辑一致。

  • 示例

    @Override
    public int hashCode() {
        return Objects.hash(name, age); // 使用工具类简化计算
    }

4. getClass()

  • 作用:返回对象的运行时类(Class对象)。

  • 应用场景

    • 反射操作(如动态创建实例、调用方法)。

    • 精确判断对象类型(优于instanceof)。

  • 示例

    Class<?> clazz = obj.getClass();
    System.out.println(clazz.getName()); // 输出类全限定名

5. clone()

  • 作用:创建对象的浅拷贝副本。

  • 应用场景

    • 需要复制对象时(需实现Cloneable标记接口,否则抛CloneNotSupportedException)。

    • 深拷贝需手动重写(递归复制引用类型字段)。

  • 示例

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone(); // 浅拷贝
    }

6. finalize()(已废弃)

  • 作用:对象被垃圾回收前调用的清理方法(Java 9+标记为废弃)。

  • 替代方案:使用AutoCloseable(如try-with-resources)或显式清理方法。

7. wait(), notify(), notifyAll()

  • 作用:线程间通信的等待/通知机制(必须在synchronized块中使用)。

  • 应用场景

    • 生产者-消费者模型。

    • 多线程协作任务(如线程池任务调度)。

  • 示例

    synchronized (lock) {
        while (conditionNotMet) {
            lock.wait(); // 释放锁并等待
        }
        // 执行操作
        lock.notifyAll(); // 唤醒其他线程
    }

核心方法总结

方法典型应用场景注意事项
toString()日志输出、调试建议所有类重写
equals()/hashCode()集合操作、对象比较必须同时重写,保持逻辑一致
getClass()反射、类型判断返回运行时类对象
clone()对象复制深拷贝需手动实现
wait()/notify()多线程同步需搭配synchronized使用

为什么重要?

  • 默认行为:所有类继承Object,理解其方法避免踩坑(如集合比较错误)。

  • 框架依赖:如HashMap依赖hashCode()equals(),序列化依赖toString()

  • 设计规范:正确重写这些方法是面向对象设计的基本要求。

总结 

到此这篇关于Java中object类常用方法及应用场景的文章就介绍到这了,更多相关object类常用方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • springboot+nacos+gateway实现灰度发布的实例详解

    springboot+nacos+gateway实现灰度发布的实例详解

    灰度发布是一种在软件部署过程中用于平滑过渡的技术,通过引入灰度发布SDK和配置网关策略实现,本文就来介绍一下,感兴趣的可以了解一下
    2022-03-03
  • ReentrantReadWriteLock不能锁升级的原因总结

    ReentrantReadWriteLock不能锁升级的原因总结

    今天给大家带来的是关于Java并发的相关知识,文章围绕着为什么ReentrantReadWriteLock不能锁升级展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 基于SpringBoot启动类静态资源路径问题

    基于SpringBoot启动类静态资源路径问题

    这篇文章主要介绍了SpringBoot启动类静态资源路径问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • java MD5加密实现代码

    java MD5加密实现代码

    这篇文章主要为大家详细介绍了java MD5加密实现过程,为大家分享了MD5加密代码,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • java数独游戏完整版分享

    java数独游戏完整版分享

    这篇文章主要为大家分享了java数独游戏的完整版,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • JVM常量池的深入讲解

    JVM常量池的深入讲解

    这篇文章主要给大家介绍了关于JVM常量池的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • java实现分布式锁的常用三种方式

    java实现分布式锁的常用三种方式

    本文主要介绍了java实现分布式锁,一般有这3种方式,基于数据库实现的分布式锁、基于Redis实现的分布式锁和基于Zookeeper实现的分布式锁,具有一定的参考价值,感兴趣的可以了解一下
    2024-08-08
  • IO密集型任务设置线程池线程数实现方式

    IO密集型任务设置线程池线程数实现方式

    这篇文章主要介绍了IO密集型任务设置线程池线程数实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java Socket实现UDP编程浅析

    Java Socket实现UDP编程浅析

    类 DatagramSocket 何 DatagramPacket(数据包/数据报) 实现了基于 UDP协议网络程序;UDP数据报通过数据报套接字 DatagramSocket 发送和接收,系统不保证 UDP数据报一定能够安全送达目的地,也不确定什么时候可以抵达
    2022-11-11
  • 最有价值的50道java面试题 适用于准入职Java程序员

    最有价值的50道java面试题 适用于准入职Java程序员

    这篇文章主要为大家分享了最有价值的50道java面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,对hashCode方法的设计、垃圾收集的堆和代进行剖析,感兴趣的小伙伴们可以参考一下
    2016-05-05

最新评论