package com.example.test;
import android.util.Log;
public class TestString {
public void testPlus() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s = s + String.valueOf(i);
}
long te = System.currentTimeMillis();
Log.e("+cost {} ms", te - ts + "");
}
public void testConcat() {
String s = "";
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
s = s.concat(String.valueOf(i));
}
long te = System.currentTimeMillis();
Log.e("concat cost {} ms", te - ts + "");
}
public void testStringBuffer() {
StringBuffer sb = new StringBuffer();
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
sb.append(String.valueOf(i));
}
sb.toString();
long te = System.currentTimeMillis();
Log.e("StringBuffer cost {} ms", te - ts + "");
}
public void testStringBuilder() {
StringBuilder sb = new StringBuilder();
long ts = System.currentTimeMillis();
for (int i = 0; i < 10000; i++) {
sb.append(String.valueOf(i));
}
sb.toString();
long te = System.currentTimeMillis();
Log.e("StringBuilder cost {} ms", te - ts + "");
}
}
会发现其实 + 和 stringbuilder在拼接很多的字符串的时候性能差距非常大,
当然 如果拼接两个或者很少的字符串效果就不明显了,:
拼接两个字符串的时候,两种方式都需要创建三个String对象