性能方面: StringBuilder>StringBuffer>String(for)循环里面字符串拼接
线程安全:StringBuilder(非线程安全,速度快) StringBuffer (线程安全,速度慢)
如何选择:方法内无线程安全问题,选择StringBuilder 有线程安全问题,使用StringBuffer
如果使用:
当连接几个String 时候,使用String.concat
当连接较多字符串 依据线程安全需求,选择StringBuffer或StringBuilder
当使用较多,且无法确认具体连接字符串次数与数目时候,选择StringBuilder 因为相对而言,单线程StringBuilder速度快
原因解读:
1. String 是最终变量 每修改String 会重新使用新的内存,原有内存会依据JVM清除,消耗内存大
2. Stringbuilder 是单线程操作字符串缓冲区,每次修改 内存地址不会增加消耗量,即为在原有基础上,增加栈长度
3. Stringbuffer 是多线程操作字符串缓冲区下操作大量数据,但是多线程效率没有单线程速度快