字符串常用的操作就是拼接,香港空间,特别是SQL语句的拼接。
做了个简单的试验,它们之间的差别惊人!
StringBuffer:
testStringBuffer() { 2long start = System.currentTimeMillis(); 3StringBuffer sb = new StringBuffer();(int i = 0; i < COUNT; i++) { 6 sb.append(STR_INIT); 7 } 8long end = System.currentTimeMillis(); 910System.out.println(“StringBuffer 耗时:” + (end – start));11}
运行结果:基本在50毫秒
StringBuilder:
testStringBuilder() { 2long start = System.currentTimeMillis(); 3StringBuilder sb = new StringBuilder();(int i = 0; i < COUNT; i++) { 6 sb.append(STR_INIT); 7 } 8long end = System.currentTimeMillis(); 910System.out.println(“StringBuilder 耗时:” + (end – start));11}
运行结果:平均50毫秒,香港虚拟主机,最低30多毫秒,最高90多毫秒
String:
testString() { 2long start = System.currentTimeMillis(); 3String s = “”;(int i = 0; i < COUNT; i ++) { 6s += STR_INIT; 7 }end = System.currentTimeMillis();1011System.out.println(“Str 耗时:” + (end – start));12}
运行结果:2分多钟(是StringBuffer,StringBilder的上千倍)
代码说明:
for循环的次数(COUNT)为10000
StringBuffer和StringBuilder的区别:
StringBuffer——线程安全的
StringBuilder——非线程安全
JDKAPI建议:如果不涉及线程问题,建议使用StringBuilder
个人建议:当需要字符串做拼接时,使用StringBuilder吧!
,香港空间知已知彼,百战百胜。