java中的String是不可变的,每一次拼接都会产生一个新字符串,这样会占用的大量的方法区内存,造成内存浪费。
字符串答大量拼接可以使用如下两个:
StringBuffer、StringBuilder
一、StringBuffer
字符串缓存区对象。
默认字符串容量是16
StringBuffer s = new StringBuffer("1");
优化
创建StringBuffer时,尽可能给定一个最终的初始化容量,这样减少底层数组的扩容。
String和StringBuffer区别
String底层也是byte数组,是final修饰的,不可变。
StringBuffer底层也是Byte数组,但是前边没有final,当数组满了,它会自动扩容,创建新数组,把之前数组中的元素拷贝到新数组中。
二、StringBuilder
与StringBuffer区别
StringBuffer是线程安全的,在多线程环境下运行是安全的。
StringBuilder非线程安全的。