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

11.string,stringbuilder,stringbuffer的区别和联系。

这三个类都是用来处理字符串的类,但是它们之间有一些区别和联系。

  • 从指向内存区域变不变来分,通俗点就是字符串的可不可变性
    • 线程安全与效率方面

从指向内存区域变不变来分,通俗点就是字符串的可不可变性

1.string创建对象的时候,例如string str=“xx”
其str指向的内存区域存储的xx是不能变的,如果此时你想改变str值,使str值变成xin这个字符串,也就是str=“xin”。
此时str开辟了新的内存区域存储xin,str不再指向xx的内存首地址,而是指向了xin这个内存的首地址,长度为3。
而stringbuffer与stringbuilder则可以直接将xx内存区域的值变成xin,大小从2变成3。
所以可变性与不可变性两者一对比就出来了。

线程安全与效率方面

string由于只能指向一个内存区域,所以是有线程安全性的。
stringbuffer从历史发展上看相比stringbuilder有点老了,如果stringbuffer是1.0那么stringbuilder就是1.5。所以两者功能上没啥差别。
就是刚开始jdk作者创建stringbuffer的时候为了线程安全考虑,过于谨慎,把stringbuffer的方法全用Schychronized修饰了导致stringbuffer效率过低,后来jdk作者认为大多数时候不需要线程安全的,所以就创造出了专门在单线程情况下运行的stringbuilder使的其效率大大增强。


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

相关文章:

  • 【大数据学习 | HBASE高级】rowkey的设计,hbase的预分区和压缩
  • 搭建深度学习开发环境
  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • quartz
  • LabVIEW开发相机与显微镜自动对焦功能
  • Vue 3 介绍及应用
  • 5. 操作系统基础
  • windows下定时备份mysql数据库
  • 第 02 章 OSPF实验
  • 【AI前沿】chatgpt还有哪些不足?
  • Python操作PostgreSQL数据库
  • 【学习视频】阅读开源工业软件和工业智能实战上线B站
  • 数字设计小思 - D触发器与死缠烂打的亚稳态
  • 五种最危险的新兴网络攻击技术
  • 《***生态文明思想学习纲要》学习辅导
  • git alias
  • 【Python】【进阶篇】16、settings.py配置文件详解
  • 登录关键字封装
  • 使用树莓派(zero2w + Camera Module 3 支持自动对焦 1200 万像素)拍照
  • JavaSE第三章 访问修饰符,Collection,List
  • 是面试官放水,还是公司实在是太缺人?这都没挂,腾讯原来这么容易进···
  • 【MySQL】带你了解MySQL 如何学习MySQL以及MySQL的用途以及意义
  • SQL 使用where字句条件查询
  • 4月23日作业
  • 年薪40万程序员辞职炒股,把一年工资亏光了,得了抑郁症,太惨了
  • 为什么越来越多的企业选择云计算?—分析云计算的优势和未来发展趋势