Java中String、StringBuffer、StringBuilder主要区别如下:
String
- String类是不可变类,String对象一旦被创建,该对象中的字符序列不可改变,直至这个对象被销毁。
String a = "123";
a = "456";
// 打印出来的a为456
System.out.println(a)
- 当再次给a赋值时,生成一个新的实例对象,并且指向新的字符串,之前旧的实例对象仍存在,如果不再被引用则会被回收。
StringBuffer
- StringBuffer对象初始化一个字符序列可变字符串
- 常见操作:append()、insert()、reverse()、setCharAt()、setLength()等(可改变字符串)
- 可通过调用toString()函数将其转换为String对象
StringBuffer b = new StringBuffer("123");
b.append("456");
// b打印结果为:123456
System.out.println(b);
- StringBuffer并未重新生成对象,在原实例对象中可连接新字符串
StringBuilder
- StringBuilder为可变字符串对象
- 与StringBuffer相似
- 区别:StringBuffer线程安全,StringBuilder非线程安全,性能略高