String与StringBuilder
这二者在内存、性能、用法上都有显著区别
String
- String是不可变的,任何修改操作,都会新建一个String
- 由于其不可变性,大量对其操作时,会导致性能下降与内存浪费
StringBuilder
- StringBuilder是可变的,存在一个可变长的缓冲区,由其本身维护,并根据需要,自动调整大小,内部是一个
char[] buffer - 操作完毕后,可通过toString()将其转化为str
二者优劣
- String更通用,内存占用少,由于不可变的特性,天然线程同步,对于
string a = "abc"; string b = "abc";实际只存了一份。 - StringBuilder可变,线程不同步,但在进行大量操作时,可以显著提高性能