String和StringBuffer有什么区别
String用于字符串操作,属于不可变类,而StringBuffer也是用于字符串操作,不同之处是StringBuffer属于可变类。
String是不可变类,也就是说,String对象一旦被创建,其值将不能被改变,而StringBuffer是可变类,当对象被创建后,仍然可以对其值进行修改。如果一个字符串
需要被修改的时候,使用StringBuffer有更高的效率。
为了更好地说明这一问题,下面分析一个示例。
public class Test {
public static void testString(){
String s = "Hello";
String s1 = "world";
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s += s1;
}
long end = System.currentTimeMillis();
long runTime = (end - start);
System.out.println("testString:" + runTime);
}
public static void testStringBuffer(){
StringBuffer s = new StringBuffer("Hello");
String s1 = "world";
long start = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s.append(s1);
}
long end = System.currentTimeMillis();
long runTime = (end - start);
System.out.println("testStringBuffer:" + runTime);
}
public static void main(String[] args) {
testString();
testStringBuffer();
}
}
程序的运行结果为
testString:154
testStringBuffer:0
从程序的运行结果可以看出,当一个字符串需要经常被修改的时候,使用StringBuffe比使用String的性能要好很多。