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

java中什么是不可变类

什么是不可变类

不可变类是指一旦创建对象后,其状态(属性值)就不能被修改的类。

一个不可变类具有以下特征:

  1. 类的实例变量声明为私有的,并且没有提供修改这些变量值的公共方法。
  2. 类是final的,防止被继承。
  3. 类的实例变量声明为final,一旦被初始化后就不能再修改。
  4. 没有提供修改状态的公共方法。

不可变类的优点是:

  1. 线程安全:由于不可变类的状态不变,所以不需要额外的同步机制来保护对象的一致性。
  2. 缓存优化:由于不可变类的对象是不可变的,可以在需要时进行缓存,以提高性能。
  3. 安全性:不可变类可以保证对象的一致性,避免了意外的状态修改。

常见的不可变类包括String、Integer包装类、BigDecimal等。这些类都具有不可变性,即一旦创建后,它们的值将不会被修改。

为什么 Java 中 String 是不可变类?

1、String 类中包含 char 数组 value、整形的 offset 和 count 三个属性,这三个属性都是 private 的,且没有提供方法修改数值,因此在初始化后无法从外部改变。
2、String 类中的这三个属性都是被 final 修饰的,无法从内部进行改变;
3、方法区有一块特殊存储区域 String Pool(字符串常量池),当创建 String 时,如果在 String Pool 中找到相同的字符串值,则会返回一个已存在 String 的引用而不会新建一个对象。假设 String 是可变的,则会导致其他引用这个字符串值的 String 的值发生变化。

http://www.lryc.cn/news/199330.html

相关文章:

  • 使用Perl和WWW::Mechanize库编写
  • 智荟雄安,创想未来 | 竹云董事长受邀出席雄安新区2023软件和信息技术服务业创新发展论坛并作主题演讲
  • 【设计模式-1】UML和设计原则
  • 【数据结构】——二叉树的基础知识
  • 日常bug汇总
  • C#使用PPT组件的CreateVideo方法生成视频
  • 数字化体系如何帮助企业拓展裂变增长渠道?数字化营销体系构建?
  • 关于vant 的tabbar功能
  • :style动态绑定,但只要页面发生变化就会执行一次方法
  • 文件的逻辑结构(顺序文件,索引文件)
  • suricata匹配从入门到精通(五)----二次开发保护规则库
  • 软件测试肖sir__python之ui自动化定位方法(2)
  • 【JVM面试题】JVM分代年龄为何是15次?能设置为16吗?
  • java三层架构/表现层-业务层-持久层
  • 视频监控这样做,简单又高效!
  • 掌握 Go 的计时器
  • 嵌入式软件开发笔试面试
  • 【Qt高阶】Linux安装了多个版本的Qt 部署Qt程序,出包【2023.10.17】
  • OpenGL简介
  • 持续集成工具jenkins操作
  • 使用BurpSuite抓取HTTPS接口
  • 移动硬盘被格式化了如何恢复数据?四步教你如何恢复
  • 基于变电站自动化系统中的安全措施分析及应用
  • 18、监测数据采集物联网应用开发步骤(12.3)
  • 什么是Mybatis?Mybaits有哪些优点?
  • 点云从入门到精通技术详解100篇-基于3D点云的曲面文字检测(续)
  • 用 Java 在 PDF 中创建和管理图层,实现交互式文档
  • 公司oa是什么?一般公司oa有什么样功能?
  • pytorch里面的 nn.Parameter 和 tensor有哪些异同点
  • leetcode 37. 解数独