最近项目里要解析协议,就要用到字符串的截取,拼接等操作。所以,顺道看到一篇有意思的文章是讲几种字符串拼接的效率的,感觉不错,有助于理解StringBuilder , StringBuffer , String 的。
第一步,五种字符串拼接列出来
①String += “” ② String = String + “” ③ String.concat ④ StringBuffer.append ⑤ StringBuilder.append
第二步准备工作
long n = 5000;
LogUtil.fussenLog().d("开始了");
long str1 = System.currentTimeMillis();
String s1 = new String("hello");
for (long i = 0; i < n; i++) {
s1 += "拼接--";
}
long e1 = System.currentTimeMillis();
long t1 = e1 - str1;
LogUtil.fussenLog().d("用String+=拼接字符串的时间:" + t1);
long str2 = System.currentTimeMillis();
String s2 = new String("hello");
for (long i = 0; i < n; i++) {
s2 = s2 + "拼接--";
}
long e2 = System.currentTimeMillis();
long t2 = e2 - str2;
LogUtil.fussenLog().d("用String=String+拼接字符串的时间:" + t2);
long str3 = System.currentTimeMillis();
String s3 = new String("hello");
for (long i = 0; i < n; i++) {
s3 = s3.concat("拼接--");
}
long e3 = System.currentTimeMillis();
long t3 = e3 - str3;
LogUtil.fussenLog().d("用String.concat拼接字符串的时间:" + t3);
long str4 = System.currentTimeMillis();
StringBuffer s4 = new StringBuffer("hello");
for (long i = 0; i < n; i++) {
s4.append("拼接--");
}
long e4 = System.currentTimeMillis();
long t4 = e4 - str4;
LogUtil.fussenLog().d("用StringBuffer.append拼接字符串的时间:" + t4);
long str5 = System.currentTimeMillis();
StringBuilder s5 = new StringBuilder("hello");
for (long i = 0; i < n; i++) {
s5.append("拼接--");
}
long e5 = System.currentTimeMillis();
long t5 = e5 - str5;
LogUtil.fussenLog().d("用StringBuilder.append拼接字符串的时间:"+t5);
这里n设置5000 原因是我的测试机有点老 如果真机好点 可以设置10000+ 这样最后两个效果能明显
第三步:看Log
OK,剩下的就是看图说话了。