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的性能要好很多。