1. String类
String是一个被final定义的类,所以一旦创建了String对象,其值不可被改变。
当我们更改字符串的值时,虚拟机会新建一个String对象,并赋予其值,
所以我们每一次更改String的值时候,内存中在做销毁对象,新建对象的操作,其效率非常低。
2. StringBuffer---可以在原对象基础上进行修改,是线程安全的
StringBuffer是线程安全的
StringBuffer 的对象能够被多次的修改,并且不产生新的未使用对象。
3. StringBuilder类---可以在原对象基础上被修改,但不是线程安全的
StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出, StringBuilder 的方法不是线程安全的(不能同步访问)。
StringBuilder 比 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。
4. 编写测试代码
public class Test {
public static void main(String[] args) {
String str="abc";
str="123"; //删除原str新建了一个String类型的对象
System.out.println(str);
StringBuffer strb=new StringBuffer("abc");
strb.append("123"); //改变的是原StringBuffer对象的值,并未新建对象
strb.append("456");
System.out.println(strb);
//StringBuffer对象转换为String类型
String m=strb.toString();
}
}