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

String类为什么被设计成final,这样设计有什么好处

设计成final是为了避免String类被修改

设计成final的好处是:

1.hashmap存String类对象作为key比存其他类的对象作为key,查找value更快

当创建字符串时,它的hashcode被缓存下来(String类有一个成员变量hash,对哈希码进行了缓存),不需要再次计算,所以相比于其他对象更快

其他对象中一般不会存储该对象的hashCode值,在HashMap中储存时就得需要重新计算

2.减少了对象的创建

字符串常量池避免了重复String对象的创建,节省了内存资源

创建String对象前,jvm会先检查字符串常量池中是否存在该对象,若存在则直接返回其引用,否则新建一个对象并缓存进常量池,再返回引用。

由于减少了对象创建的次数,也提高了程序的执行效率

3.保证线程安全

无法被修改,自然就是线程安全

总之就是又快,又省空间,而且安全

hashmap的key为什么常常是字符串?

同一个对象调用 hashCode() 都应该产生相同的值

String 对象的 hashCode() 值是根据 String 对象的 内容计算的,并不是根据对象的地址计算,所 以内容相同的 String 对象(而String类对象就是不可变的,所以它的散列码也是一直不变的)会产生相同的散列码

当创建字符串时,它的hashcode被缓存下来(String类有一个成员变量hash,对哈希码进行了缓存),不需要再次计算,所以相比于其他对象更快

其他对象中一般不会存储该对象的hashCode值,在HashMap中储存时就得需要重新计算


http://www.kler.cn/a/2263.html

相关文章:

  • Springboot应用开发:配置类整理
  • css让按钮放在最右侧
  • CTFHUB 历年真题 afr-1
  • Qt Quick:CheckBox 复选框
  • 54、库卡机器人轴的软限位设置
  • Windows中运行Linux(WSL)
  • 【C语言】你真的了解结构体吗
  • linux系统运维面试题大全(137道题)
  • 博客项目
  • Python中的微型巨人-Flask
  • Spark - 继承 FileOutputFormat 实现向 HDFS 地址追加文件
  • Linux- 系统随你玩之--玩出花活的命令浏览器-双生姐妹花
  • 基于ssm大学生竞赛活动平台(包含万字文档)020
  • 【java】笔试强训Day1
  • 膜拜!阿里自爆十万字Java面试手抄本,脉脉一周狂转50w/次
  • 自定义类型的超详细讲解ᵎᵎ了解结构体和位段这一篇文章就够了ᵎ
  • 蚁群算法c++
  • 【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化
  • 【Java集合】Collection接口中的常用方法
  • RK3588平台开发系列讲解(显示篇)DP显示调试方法
  • 关于STM32用DMA传输UART空闲中断中接收的数据时无法接收数据问题以及解决办法
  • STL库中list的迭代器实现痛点分析
  • 数据清洗是清洗什么?
  • 【Linux】进程的概念--程序地址空间(2)
  • 投稿指南【NO.7】目标检测论文写作模板(初稿)
  • nodejs+vue校园超市小卖部零食在线购物商城系统