今天終於明白了兩者之間的差別有多大了。。。下面是個例子看了就懂了
package testForWork;
/**
* @author openks
* @createTime 2013-10-23上午08:50:29
* String 和StringBuffer的區別
* 1.String對象是固定長度的 每對字符串處理一次就會新建一個String對象
* 2.StringBuffer是不顧定長度的可以對字符串進行處理(添加或者刪除部分字符)
* 3.String覆蓋了equals方法和hashCode方法,
* 而StringBuffer沒有覆蓋equals方法和hashCode方法,
* 所以,將StringBuffer對象存儲進Java集合類中時會出現問題。
*/
public class TestDifferenceBetweenStringAndStringBuffer {
public static void main(String[] args) {
int m =50000;
getStringBuffer(m);
getString(m);
}
public static void getString(Integer m){
long start = System.currentTimeMillis();
String str="";
for (int i = 0; i < m; i++) {
str+=i;
}
long end = System.currentTimeMillis();
System.out.println("String遍歷"+m+"次用時(毫秒數)"+(end-start));
}
public static void getStringBuffer(Integer m){
long start = System.currentTimeMillis();
StringBuffer str=new StringBuffer("");
for (int i = 0; i < m; i++) {
str.append(i);
}
long end = System.currentTimeMillis();
System.out.println("StringBuffer遍歷"+m+"次用時(毫秒數)"+(end-start));
}
}
StringBuffer遍歷50000次用時(毫秒數)16
String遍歷50000次用時(毫秒數)25078
上面是內容和結果 區別真的不是一般的大,這還只是5萬次的差別,如果數據量再大的話。性能問題就更能顯示出來了
以後對字符串處理必須要按照StringBuffer來處理了 其實轉換方法還蠻簡單地 StringBuffer轉String
StringBuffer sb = new StringBuffer("哈哈");
String s = sb.toString();
System.out.println(s);//輸出哈哈
String 轉StringBuffer
String s = "abc";
StringBuffer sb = new StringBuffer(s);