String:字符串常量
StringBuffer:字符串变量
StringBuilder:字符串变量
String 是字符串常量,也就是不可改变的对象。举个例子
- String s = "abcd";
- s = s+1;
- System.out.print(s);// result : abcd1
复制代码
这样看似是改变的String的变量s,可为什么说是没有改变?其实过程是
1创建s对象
2赋值abcd
3创建一个新的对象 执行第二行代码
所以 原来的s并没有改变,每当操作字符串时都是不断的创建新的对象,之前的被GC回收
所以说String效率低
而其他两个不同,两个容器,随意更换里面的内容,而不是创建新的对象。这样说可以理解吗? |