String 、StringBuffer 、StringBuilder的区别!!!

1、值可变性

String内部的value值是final修饰的,所以它是不可变的类,因此每次修改String的值都会产生一个新的对象, 元空间的常量池

String a = "你好"

a="他好"

而StringBuffer和StringBuilder是可变性类它们在字符串变更的时候不会产生新的对象。

2、线程安全方面

String是不可变类所以它是线程安全的。

StringBuffer也是线程安全的,应为它的每一个操作方法都加了synchernized锁。

StringBuilder线程不安全,方法没有进行同步处理,因此在单线程环境下,如果不需要考虑线程安全问题,使用StringBuilder会获得更高的性能。

3、性能方面

String由于每次修改都需要创建新的对象,所以在大量字符串操作或者字符串连接时,String的性能相对较低,因为它涉及到较多的内存分配。

StringBuilder在大量字符串操作时具有最高的性能,因为它省去了线程同步带来的开销。没有上锁,所以快。

StringBuilder相较于String,StringBuffer在多次修改字符串时性能较好,但由于其线程安 全机制,在单线程环境下可能会比StringBuilder稍慢。

相关推荐
xyyaihxl4 分钟前
将 vue3 项目打包后部署在 springboot 项目运行
java·spring boot·后端
耿雨飞5 分钟前
Python 后端开发技术博客专栏 | 第 02 篇 函数式编程与 Python 魔法 -- 闭包、装饰器、高阶函数
开发语言·python·装饰器·高阶函数·闭包
qq_334563556 分钟前
如何利用RETURNING获取ROWID_更新单行后快速定位物理地址
jvm·数据库·python
网域小星球7 分钟前
C++ 从 0 入门(五)|C++ 面试必知:静态成员、友元、const 成员(高频考点)
开发语言·c++·面试·静态成员·友元函数
Engineer邓祥浩7 分钟前
JVM学习笔记(12) 第四部分 程序编译与代码优化 第11章 后端编译与优化
jvm·笔记·学习
|_⊙8 分钟前
C++11 右值引用
开发语言·c++
zhangchaoxies8 分钟前
HTML怎么显示同步最后成功时间_HTML “上次同步:X分钟前”【教程】
jvm·数据库·python
m0_5145205714 分钟前
mysql服务器如何优化网络传输设置_调整tcp相关内核参数
jvm·数据库·python
m0_6403093014 分钟前
如何快速重置SQL表中的自增ID_使用ALTER TABLE重置计数
jvm·数据库·python
2301_7641505616 分钟前
CSS如何制作响应式导航栏_利用Flexbox实现自适应水平排列
jvm·数据库·python