原:http://www.54xue.com/w/39/n-10839.html
利用週末的時間,比較了下JAVA中String ,StringBuffer,SrtingBuilder三個對象連接字符串的效率。
比較下究竟誰的效率高。因爲我們經常都聽有經驗的人說,避免使用String通過“+”連接字符串,特
別是連接的次數很多的時候,一定要用StringBuffer,但究竟效率多高,速度多快,我也沒有測試過,
所以我就動手測試下,順便把測試結果跟大家一起分享,希望大家共同討論此問題。
下邊是我的測試代碼,可直接運行:
packagecn.com.test;
publicclassTestStringConnectTime {
//連接時間的設定
privatefinalintn= 20000;
publicstaticvoidmain(String[] args){
TestStringConnectTime test =newTestStringConnectTime ();
test.testStringTime();
test.testStringBufferTime();
test.testStringBuilderTime();
}
/**
*測試String連接字符串的時間
*/
publicvoidtestStringTime(){
longstart = System.currentTimeMillis();
String a ="";
for(intk=0;k<n;k++ ){
a +="_"+ k;
}
longend = System.currentTimeMillis();
longtime = end - start;
System.out.println("String time:"+ time);
//System.out.println("String str:" + str);
}
/**
*測試StringBuffer連接字符串的時間
*/
publicvoidtestStringBufferTime(){
longstart = System.currentTimeMillis();
StringBuffer b = newStringBuffer() ;
for(intk=0;k<n;k++ ){
b.append("_"+ k );
}
longend = System.currentTimeMillis();
longtime = end - start;
System.out.println("StringBuffer time:"+ time);
//System.out.println("StringBuffer str:" + str);
}
/**
*測試StringBuilder連接字符串的時間
*/
publicvoidtestStringBuilderTime(){
longstart = System.currentTimeMillis();
StringBuilder c = newStringBuilder() ;
for(intk=0;k<n;k++ ){
c.append("_"+ k );
}
longend = System.currentTimeMillis();
longtime = end - start;
System.out.println("StringBuilder time:"+ time);
//System.out.println("StringBuffer str:" + str);
}
}