这个你看一下它们的定义:
String、StringBuffer、StringBuilder可以储存和操作字符串,即包含多个字符的字符数据。String类表示内容不可改变的字符串。而StringBuffer、StringBuilder类表示内容可以被修改的字符串。
String覆盖了equals和hashCode方法,StringBuffer没有覆盖equals方法和hashCode方法
如果你知道字符数据要改变就使用StringBuffer。
举个例子:将1到99的数字拼接起来,形成一个字符串
StringBuffer sbf = new StringBuffer();
for(int i=1;i<=99;i++)
{
sbf.append(i);
}
上面的代码执行效率很高,只创建了一个StringBuffer对象,而用String实现相同的功能效率很低
String str = new String();
for(int i=1;i<=99;i++)
{
str = str + i;
}
因为String类是不可改变的字符串,所以创建了99个String对象
StringBuffer和StringBuilder类都表示内容可以被修改的字符串。
区别在于StringBuilder是线程不安全的,运行效率高,如果一个字符串变量是在方法里面定义,这种情况只可能有一个线程访问它,不存在不安全的因素了,则用StringBuilder。如果要在类里面定义成员变量,并且这个类的实例对象会在多线程环境下使用,那么使用StringBuffer。 |