javaの中でString+StringとStringBuiderのapped()方法の効率の問題

973 ワード

前回のA問題では、Stringの+はいつもタイムアウトしていました。その後、appedの方法を使って、過ぎてしまいました。両者の効率には大きな違いがあることが分かりました。テストは以下の通りです。
public static void main(String[] args) {
		// TODO          
		String str = ""; 
		StringBuffer sb = new StringBuffer(); 
		long start = 0L; 
		long end = 0L; 
		start = System.currentTimeMillis(); 
		for (int i = 0; i < 100000; i++) { 
		str = str + "a"; 
		} 
		end = System.currentTimeMillis(); 
		System.out.println("  string    :" + (end - start) + "  !"); 

		start = System.currentTimeMillis(); 
		for (int i = 0; i < 100000; i++) { 
		sb.append("a"); 
		} 
		end = System.currentTimeMillis(); 
		System.out.println("  StringBuffer    :" + (end - start) + "  !"); 
		//System.out.println(getMax("aba"));
	}
stringを使う時間は4471ミリ秒です。StringBufferを使う時間は3ミリ秒です。
これは全く同じレベルではないので、覚えておいてください。大量の文字列接続は必ずapped()の方法を使います。理由は簡単です。文字列接続は毎回新しい文字列オブジェクトを作成して新しい列を保存する必要があります。。。。。。。わかります