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

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

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

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

不可变对象的定义

字段使用 private final 来修饰

不可变对象的例子

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

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

好处:

  • 线程安全

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

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

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

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

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

相关文章:

  • 适用监测农作物长势和病虫害的高光谱/多光谱相机有哪些?
  • 【网络通信】TCP/IP 协议全方位解析​
  • 【LeetCode】12. 整数转罗马数字
  • STM32——软硬件I2C
  • 8月17日星期天今日早报简报微语报早读
  • 解锁Java开发神器:XXL-Job从入门到精通
  • java如何使用正则提取字符串中的内容
  • Go语言实战案例-使用ORM框架 GORM 入门
  • Centos 更新/修改宝塔版本
  • GaussDB 数据库架构师修炼(十三)安全管理(5)-全密态数据库
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十二节:网关安全-信息过滤
  • 哈希表与unorder_set,unorder_map的学习
  • 【Linux系列】常见查看服务器 IP 的方法
  • 深入了解 Filesystem Hierarchy Standard (FHS) 3.0 规范
  • 17.5 展示购物车缩略信息
  • 【Linux】文件基础IO
  • Google Earth Engine | (GEE)逐月下载的MODIS叶面积指数LAI
  • Rust 入门 生命周期(十八)
  • 【牛客刷题】字符串按索引二进制1个数奇偶性转换大小写
  • C#高级语法_委托
  • java基础(十)sql的mvcc
  • 字节 Golang 大模型应用开发框架 Eino简介
  • 进程互斥的硬件实现方法
  • 私人AI搜索新突破:3步本地部署Dify+Ollama+QwQ,搜索能力MAX
  • 《动手学深度学习v2》学习笔记 | 1. 引言
  • Nacos 注册中心学习笔记
  • C++入门自学Day11-- String, Vector, List 复习
  • Kafka 面试题及详细答案100道(23-35)-- 核心机制2
  • 3D打印——给开发板做外壳
  • 最新技术论坛技术动态综述