当前位置: 首页 > news >正文

24. 什么是不可变对象,好处是什么

24. 什么是不可变对象,好处是什么

一个对象创建起来之后,内部的字段值不可再修改。任何修改之后,都会新创建一个对象。

不可变对象的定义

字段使用 private final 来修饰

不可变对象的例子

  • String : 字符串拼接会生成新的String对象,而不是原来的

    String str = "Hello";
    str = str + " World"; // 创建新字符串对象,原"Hello"未被修改
    
  • 基本类型的包装类 :如:Integer Long 等

好处:

  • 线程安全

    • 不可变对象的状态不会改变,在多线程中,可以数据多共享,无需同步
  • 简化并发编程

    • 不需要担心对象被修改,减少了同步代码的复杂度
  • 缓存友好

    • 哈希值在对象创建时确定且固定,适合作为哈希键(HashMap 的键)
    • 可安全缓存结果(如: String 的 hashCode 的缓存)
  • 安全性

    • 防止对象被意外修改
    • 适合用于敏感数据
  • 内存共享与优化

    • 不可变对象可以被多个对象共享,减少内存开销
    • JVM可以优化不可变对象的存储和访问
http://www.dtcms.com/a/335495.html

相关文章:

  • Flink作业执行的第一步:DataFlow graph的构建
  • 一周学会Matplotlib3 Python 数据可视化-多子图及布局实现
  • 【传奇开心果系列】Flet框架实现的家庭记账本示例自定义模板
  • Python可视化工具-Bokeh:动态显示数据
  • 【Golang】:错误处理
  • 10 SQL进阶-SQL优化(8.15)
  • 【Luogu】每日一题——Day21. P3556 [POI 2013] MOR-Tales of seafaring (图论)
  • 中国大学MOOC--C语言程序设计第十周字符串(下)
  • openEuler等Linux系统中如何复制移动硬盘的数据
  • HTTPS 配置与动态 Web 内容部署指南
  • Hadoop入门
  • SpringCloud 06 服务容错 Sentinel
  • NY270NY273美光固态闪存NY277NY287
  • 黎阳之光:以动态感知与 AI 深度赋能,引领电力智慧化转型新革命
  • mysql||事务相关知识
  • nertctl使用了解
  • Node.js导入MongoDB具体操作
  • IoT/HCIP实验-5/基于WIFI的智慧农业实验(LwM2M/CoAP+PSK+ESP8266 连接到 IoTDA)
  • python study notes[4]
  • Vue深入组件:Props 详解3
  • 【adb端口5555】烽火hg680-gy_烽火hg680-gc安卓9线刷烧录包 解决用一段时间就提示升级的问题
  • 回溯剪枝的 “减法艺术”:化解超时危机的 “救命稻草”(一)
  • 如何在 Ubuntu 24.04、22.04 或 20.04 Linux 中更改计算机名称
  • 智能化管理:开启海洋牧场新时代
  • 字节 Golang 大模型应用开发框架 Eino简介
  • Vue深入组件:Props 详解2
  • es7.17.x es服务yellow状态的排查查看节点,分片状态数量
  • 42 C++ STL模板库11-容器4-forward_list
  • C++算法竞赛:位运算
  • 线程(基本概念和相关命令)