String, StringBuffer, StringBuilder的区别_字符串

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉
🍎个人主页:Leo的博客 💞当前专栏:每天一个知识点 ✨特色专栏: MySQL学习 🥭本文内容:String, StringBuffer, StringBuilder的区别
🖥️个人小站 :个人博客,欢迎大家访问
📚个人知识库: 知识库,欢迎大家访问

String, StringBuffer, StringBuilder的区别_线程安全_02

1. 可变性

String 内部的 value 值是 final 修饰的,所以它是不可变类。所以每次修改 String的值,都会产生一个新的对象。

StringBuffer 和 StringBuilder 是可变类,字符串的变更不会产生新的对象。

2. 线程安全性

Srring 是不可变的,所以它是线程安全的。

StringBuffer 是线程安全的,因为它的每个操作方法都加了synchronized 同步关键 字。

StringBuilder 是非线程安全的,在多环境下对字符串进行操作的时候,应该使用StringBuffer,否则才会使用 StringBuilder

3. 性能方面

String 的性能是最的低的,因为不可变意味着在做字符串拼接和修改的时候,需要重新创建新的对象以及分配内存。 其次是 StringBuffer 要比 String 性能高,因为它的可变性使得字符串可以直接被 修改最后是 StringBuilder,它比 StringBuffer 的性能高,因为 StringBuffer 加了 同步锁。

4. 存储方面

String 存储在字符串常量池里面

StringBufferStringBuilder 存储在堆内存空间。

5. 使用场景

String:适用于少量的字符串操作的情况。

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况。

StringBuffer:适用于多线程下在字符缓冲区进行大量操作的情况。

6. 运行速度

运行速度快慢顺序为:StringBuilder > StringBuffer > String