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稍慢。

相关推荐
9号达人几秒前
Java 13 新特性详解与实践
java·后端·面试
橙序员小站6 分钟前
搞定系统设计题:如何设计一个支付系统?
java·后端·面试
周周记笔记8 分钟前
学习笔记:Python的起源
开发语言·python
嘟嘟可在哪里。20 分钟前
IntelliJ IDEA git凭据帮助程序
java·git·intellij-idea
岁忧21 分钟前
(LeetCode 每日一题) 3541. 找到频率最高的元音和辅音 (哈希表)
java·c++·算法·leetcode·go·散列表
懒大王952721 分钟前
uni-app + Vue3 + EZUIKit.js 播放视频流
开发语言·javascript·uni-app
_extraordinary_25 分钟前
Java 多线程进阶(四)-- 锁策略,CAS,synchronized的原理,JUC当中常见的类
java·开发语言
JasmineX-140 分钟前
数据结构——顺序表(c语言笔记)
c语言·开发语言·数据结构·笔记
java搬砖工-苤-初心不变1 小时前
OpenResty 配合 Lua 脚本的使用
开发语言·lua·openresty
IT灰猫1 小时前
C++轻量级配置管理器升级版
开发语言·c++·设计模式·配置管理·ini解析