/** * 从JDK1.5中,有了StringBuilder。 */ public class DifferenceStringBufferAndStringBuilder { private static final String base = "String"; private static final int count = 3000000;
public static void main(String[] args) { stringTest(); stringBufferTest(); stringBuilderTest();
addToStringBuilder(); addToStringBuffer(); }
/** * string执行性能测试 */ public static void stringTest() { long begin, end; begin = System.currentTimeMillis(); String test = new String(base); // 在这里为什么要缩150,因为其实时间是很长的 for (int i = 0; i < count / 150; i++) { test = test + "add"; } end = System.currentTimeMillis(); System.out.println((end - begin) + "millis has elapsed when used String"); }
/** * stringBuffer */ public static void stringBufferTest() { long begin, end; begin = System.currentTimeMillis(); StringBuffer stringBuffer = new StringBuffer(base); for (int i = 0; i < count; i++) { stringBuffer.append("add"); } end = System.currentTimeMillis(); System.out.println((end - begin) + "millis has elapsed when used StringBuffer"); }
/** * stingBuilder */ public static void stringBuilderTest() { long begin, end; begin = System.currentTimeMillis(); StringBuilder stringBuilder = new StringBuilder(base); for (int i = 0; i < count; i++) { stringBuilder.append("add"); } end = System.currentTimeMillis(); System.out.println((end - begin) + "mills has elapsed when used StringBuilder"); }
/** *转换为StringBuilder */
public static String appendItemsToStringBuilder(List list){ StringBuilder stringBuilder = new StringBuilder(); for (Iterator i = list.iterator();i.hasNext();){ stringBuilder.append(i.next()).append(""); } return stringBuilder.toString(); }
public static void addToStringBuilder(){ List list = new ArrayList(); list.add("l"); list.add("y"); list.add("z"); System.out.println(DifferenceStringBufferAndStringBuilder.appendItemsToStringBuilder(list)); }
public static String appendItemsToStringBuffer(List list){ StringBuffer stringBuffer = new StringBuffer(); for (Iterator i = list.iterator();i.hasNext();){ stringBuffer.append(i.next()).append(""); } return stringBuffer.toString(); }
public static void addToStringBuffer(){ List list = new ArrayList(); list.add("l"); list.add("y"); list.add("z"); System.out.println(DifferenceStringBufferAndStringBuilder.appendItemsToStringBuffer(list)); }
}
最后输出的是
1 2 3 4 5
1127millis has elapsed when used String 86millis has elapsed when used StringBuffer 35mills has elapsed when used StringBuilder lyz lyz