String 和StringBuffer的性能差別

今天終於明白了兩者之間的差別有多大了。。。下面是個例子看了就懂了

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);




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章