String性能最差,final对象,不能改变,做字符拼接是得重新new一个对象,然后作拼接
StringBuffer 在对象内部操作,里面的方法绝大数是同步方法,在内部用 char[]数组进行操作
StringBuilder是StringBuffer的非同步对象,如果没有线程安全,则可以用此对象,性能比StringBuffer更好
一下是测试代码package stringaa;
package stringaa;
import java.util.ArrayList;
import java.util.List;
/**
* String StringBuffer StringBuider三者性能
* @author Administrator
*
* String 不可变,对String做+操作实际上是将两个字符串合并重新生产新的String对象
*StringBuffer是对一个对象进行操作,把当前字符串copy到StringBuffer里面的char数组里,同步
*StringBuilder 非同步,和StringBuffer差不多,性能稍微好一点
*/
public class StringTest {
public static void main(String[] args) {
long start=System.currentTimeMillis();
/*String str="a";
for(int i=0;i<500000;i++){
str+=i;
}
*/
//老半天没反应
/*
StringBuffer sb=new StringBuffer("a");
for(int i=0;i<500000;i++){
sb.append("nihao");
}
*/
//完成时间94ms
StringBuilder sbu=new StringBuilder("a");
for(int i=0;i<500000;i++){
sbu.append(i);
}
//完成时间78ms
long end=System.currentTimeMillis();
System.out.println(end-start);
}
}
分别对三个执行50w次得字符拼接,结果,StringBuilder最快78ms,StringBuffer其次94ms,两者性能差别不大,String最慢,2分钟没出结果