三者在执行速度方面的比较:StringBuilder> StringBuffer > String
String 字符串常量
String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象
StringBuffer 字符串变量(线程安全)
每次结果都会对 StringBuffer 对象本身进行操作,而不是生成新的对象,再改变对象引用。所以在一般情况下我们推荐使用 StringBuffer ,特别是字符串对象经常改变的情况下。
StringBuilder 字符串变量(非线程安全)
package com.tarena.fly;
/**
* \* Created with IntelliJ IDEA.
* \* User: 武健
* \* Date: 2018/1/29
* \* Time: 20:45
* \* To change this template use File | Settings | File Templates.
* \* Description:String String StringBuffer StringBuilder 对比
* \
*/
public class Main {
public static void main(String[] args) {
String text = "";
long startTime = 0L;
long endTime = 0L;
StringBuffer stringBuffer = new StringBuffer();
StringBuilder stringBuilder = new StringBuilder();
startTime = System.currentTimeMillis();
for (int i = 0; i <200000 ; i++) {
stringBuffer.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuffer执行时间:" + (endTime-startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i <200000 ; i++) {
stringBuilder.append(String.valueOf(i));
}
endTime = System.currentTimeMillis();
System.out.println("StringBuilder执行时间:" + (endTime-startTime));
startTime = System.currentTimeMillis();
for (int i = 0; i <200000 ; i++) {
text += String.valueOf(i);
}
endTime = System.currentTimeMillis();
System.out.println("String执行时间:" + (endTime-startTime));
}
}