由于String类的对象内容不可改变,所以每当进行字符串拼接时,总是会在内存中创建一个新的对象。例如:
public class StringDemo {
public static void main(String[] args) {
String s = "Hello";
s += "World";
System.out.println(s);
}
}
在API中对String类有这样的描述:字符串是常量,它们的值在创建后不能被更改。
根据这句话分析我们的代码,其实总共产生了 三个字符串 ,即"Hello"、“World"和"HelloWorld”。引用变量s首先指向Hello对象,最终指向拼接出来的新字符串对象,即HelloWord 。
StringBuilder是个字符串的缓冲区,它的内部拥有一个 数组 用来存放字符串内容,进行字符串拼接时,直接在数组中加入新内容。StringBuilder会自动维护数组的扩容。
常用方法
public StringBuilder append(…):添加任意类型数据的字符串形式,并返回当前对象自身(根据这一特性可以进行“链式编程”)。
public String toString():将当前StringBuilder对象转换为String对象。