当前位置: 首页 > 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/news/16533.html

相关文章:

  • 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万程序员辞职炒股,把一年工资亏光了,得了抑郁症,太惨了
  • 为什么越来越多的企业选择云计算?—分析云计算的优势和未来发展趋势
  • ​力扣解法汇总2404. 出现最频繁的偶数元素
  • 【华为机试】HJ1 字符串最后一个单词的长度
  • 【Vue面试题】vue组件之间如何传值通信
  • pytest - Getting Start
  • 8个免费使用ChatGPT网站,部分可使用gpt4
  • 如何将 github pages 迁移到 vercel 上托管
  • C# ref和out用法和区别
  • 【MySQL入门指南】主键与唯一键的使用与区别
  • 华为OD机试 - 日志首次上报最多积分(Python)
  • CTF ASCII码 密码解密题 简单