四、StringBuffer和StringBuilder
- 关系,亲兄弟,用来存储字符串。
-
String
- jdk 1.0 就有了
- 不可变对象,好处,多线程的时候,可以避免数据共享,可以达到线程安全
- 不可变对象,坏处,如需持续多个字符串,会创建更多的字符串,占用更多的内存
- 不支持对单个字符的增删改查
- 线程安全的
-
StringBuffer
- jdk 1.4 增加的(用来解决string效率问题)
- 可变字符串---字符串缓冲区
- 从来不会把字符串创建到常量池,直接存放到堆中
- 使用new 关键字创建字符串,只在堆中创建一个对象
- 下面的方法都是原地操作,因为他是可变字符串,支持对单个字符的增删改查
- 线程安全的
-
StringBuilder
- jdk 1.5 增加的 (用来解决stringbuffer效率问题)
- 可变字符串
- 线程不安全的,性能高
- 原地操作,支持对单个字符的增删改查