首页 > 其他分享 >不可变类

不可变类

时间:2024-07-13 23:30:53浏览次数:5  
标签:String 构造方法 对象 创建 不可 变类

不可变类

  • 一个类的对象在通过构造方法创建后如果状态不会再被改变,那么它就是一个不可变(immutable)类。它的所有成员变量的赋值仅在构造方法中完成,不会提供任何 setter 方法供外部类去修改。

不可变类String

1)常量池的需要

字符串常量池是 Java 堆内存中一个特殊的存储区域,当创建一个 String 对象时,假如此字符串在常量池中不存在,那么就创建一个;假如已经存,就不会再创建了,而是直接引用已经存在的对象。这样做能够减少 JVM 的内存开销,提高效率。

2)hashCode 需要

因为字符串是不可变的,所以在它创建的时候,其 hashCode 就被缓存了,因此非常适合作为哈希值(比如说作为 HashMap的键),多次调用只返回同一个值,来提高效率。

3)线程安全

就像之前说的那样,如果对象的状态是可变的,那么在多线程环境下,就很容易造成不可预期的结果。而 String 是不可变的,就可以在多个线程之间共享,不需要同步处理。

因此,当我们调用 String 类的任何方法(比如说 trim()substring()toLowerCase())时,总会返回一个新的对象,而不影响之前的值。

自定义不可变类

1)确保类final的,不允许被其他类继承。

2)确保所有的成员变量(字段)是final的,这样的话,它们就只能在构造方法中初始化值,并且不会在随后被修改。

3)不要提供任何setter方法。

4)如果要修改类的状态,必须返回一个新的对象。

标签:String,构造方法,对象,创建,不可,变类
From: https://www.cnblogs.com/sprinining/p/18300982

相关文章

  • 2024最新方法,安全中心报错“页面不可用”,可以尝试以下方法解决
    如果你的电脑出现:页面不可用你的IT管理员已限制对此应用的某些区域的访问,并且你尝试访问的项目不可用。有关详细信息,请与IT支持人员联系。出现这个问题分别由以下原因导致:1.大部分是安装了某些安全杀毒软件,此类软件会写入策略,来接管系统自带的Windows安全中心。2.某些流氓软......
  • element-ui表格中的复选框默认选中状态、禁用状态以及默认选中不可取消状态
    element-ui表格中的复选框默认选中状态、禁用状态以及默认选中不可取消状态_表格中el-checkbox默认显示选择-CSDN博客<el-tableref="multipleTable":data="tableData3"tooltip-effect="dark"style="width:100%"@selection-change="handleS......
  • 一文掌握ReLU激活函数:深度学习中不可或缺的神器
    在深度学习的领域中,激活函数扮演着至关重要的角色,它们决定着一个神经网络节点是否应该被激活,帮助模型理解数据中复杂和非线性的关系。今天,我们将深入探讨最受欢迎的激活函数之一——ReLU(RectifiedLinearUnit)函数,揭示其为何成为许多深度学习模型的首选。1.ReLU激活函数......
  • 加速你的下载,IDM神器不可错过!快如闪电,稳如老狗
    嗨,各位小伙伴!......
  • echarts折线图实现矩形圈中的点可拖拽,圈外的点不可拖拽
    原生HTML+JavaScript版本<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>曲线形式的统计图示例</title><scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.9.0-rc.1/echarts.min.js&q......
  • Nginx性能调优5招35式不可不知的策略实战
    Nginx是一个高性能的HTTP和反向代理服务器,它在全球范围内被广泛使用,因其高性能、稳定性、丰富的功能以及低资源消耗而受到青睐。今天V哥从5个方面来介绍Nginx性能调优的具体策略,希望对兄弟们有帮助,废话不多说,马上开整。1.系统层面:调整内核参数:例如,增加系统文件描述符的......
  • Nginx性能调优5招35式不可不知的策略实战
    Nginx是一个高性能的HTTP和反向代理服务器,它在全球范围内被广泛使用,因其高性能、稳定性、丰富的功能以及低资源消耗而受到青睐。今天V哥从5个方面来介绍Nginx性能调优的具体策略,希望对兄弟们有帮助,废话不多说,马上开整。1.系统层面:调整内核参数:例如,增加系统文件描述符的限制......
  • 当非遗遇上AI,简直美不可言!
    本文由ChatMoney团队出品大家好,今天我要跟大家分享的是关于非遗与AI结合!我是用ChatmoneyAI-ChatAI聊天系统AI绘画制作的,你敢相信这些照片都是AI生成的吗?一、引言:随着科技的飞速发展,传统文化与现代科技的融合愈发引人注目。最近,非遗与人工智能(AI)的奇妙结合让我们目瞪口呆,简直......
  • 可视化作品集(09):可视化运维大屏不可或缺。
    可视化大屏在可视化运维上有很多价值,而且应用十分普遍,本文给老铁们分享一下。1.实时监控:可视化大屏可以实时展示系统运行状态、设备状态、生产数据等信息,使运维人员能够及时发现问题并做出相应的处理。2.数据分析:通过可视化大屏展示历史数据、趋势分析等,可以帮助运维......
  • 妙,奇妙,玄妙,美妙,微妙,高妙,巧妙,妙不可言
    语言是很奇妙的雄鸡司晨,公鸡只是在咯咯地叫吗?其实,公鸡是一个巫师,它是在召唤(call),召唤什么?召唤太阳(O),拟人化、或神格化之后,太阳就变成了上帝(God)或者神(god),雄鸡一唱天下白,God(上帝)其实就是太阳神,太阳神出来之后,发光普照天下,发的什么光?bright明亮的光,其实就是白光,blank(空白的),ban......