类型 | 常量/变量 | 适用场景 | 性能 |
String | 字符串常量 | 操作少量的数据 | |
String Buffer | 字符串变量(线程安全) | 多线程操作大量数据 | 低 |
String Builder | 字符串变量(非线程安全) | 单线程操作大量数据
| 高 |
这里解释下为什么builder是单线程的,而Buffer是多线程的.
因为多线程往往需要的是高IO,高IO需要的是Buffer,
而单线程的往往是CPU密集的,所以单线程的名字叫builder.
应用场景总结如下:
数据类型 | 适用场景 | 起名原因 |
StringBuilder | CPU密集 | - |
StringBuffer | IO密集 | 操作Buffer频繁 |
Reference:
[1]String,StringBuffer与StringBuilder的区别|线程安全与线程不安全
[2]面试题:String、StringBuffer、StringBuilder的区别与联系
[3]JAVA面试题----------String、StringBuilder和StringBuffer