字符串 —— String?StringBuffer?StringBuilder?
添加时间:2013-8-12 点击量:
字符串常用的操纵就是拼接,希罕是SQL语句的拼接。
做了个简单的实验,它们之间的差别惊人!
StringBuffer:
1 public void testStringBuffer() {
2 long start = System.currentTimeMillis();
3 StringBuffer sb = new StringBuffer();
4
5 for (int i = 0; i < COUNT; i++) {
6 sb.append(STR_INIT);
7 }
8 long end = System.currentTimeMillis();
9
10 System.out.println(StringBuffer 耗时: + (end - start));
11 }
运行成果:根蒂根基在50毫秒
StringBuilder:
1 public void testStringBuilder() {
2 long start = System.currentTimeMillis();
3 StringBuilder sb = new StringBuilder();
4
5 for (int i = 0; i < COUNT; i++) {
6 sb.append(STR_INIT);
7 }
8 long end = System.currentTimeMillis();
9
10 System.out.println(StringBuilder 耗时: + (end - start));
11 }
运行成果:均匀50毫秒,最低30多毫秒,高90多毫秒
String:
1 public void testString() {
2 long start = System.currentTimeMillis();
3 String s = ;
4
5 for (int i = 0; i < COUNT; i ++) {
6 s += STR_INIT;
7 }
8
9 long end = System.currentTimeMillis();
10
11 System.out.println(Str 耗时: + (end - start));
12 }
运行成果:2分多钟(是StringBuffer,StringBilder的上千倍)
代码申明:
for轮回的次数(COUNT)为 10000
StringBuffer和StringBuilder的差别:
StringBuffer——线程安然的
StringBuilder——非线程安然
JDK API建议:若是不涉及线程题目,建议应用StringBuilder
小我建议:当须要字符串做拼接时,应用StringBuilder吧!
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
字符串常用的操纵就是拼接,希罕是SQL语句的拼接。
做了个简单的实验,它们之间的差别惊人!
StringBuffer:
1 public void testStringBuffer() {
2 long start = System.currentTimeMillis();
3 StringBuffer sb = new StringBuffer();
4
5 for (int i = 0; i < COUNT; i++) {
6 sb.append(STR_INIT);
7 }
8 long end = System.currentTimeMillis();
9
10 System.out.println(StringBuffer 耗时: + (end - start));
11 }
运行成果:根蒂根基在50毫秒
StringBuilder:
1 public void testStringBuilder() {
2 long start = System.currentTimeMillis();
3 StringBuilder sb = new StringBuilder();
4
5 for (int i = 0; i < COUNT; i++) {
6 sb.append(STR_INIT);
7 }
8 long end = System.currentTimeMillis();
9
10 System.out.println(StringBuilder 耗时: + (end - start));
11 }
运行成果:均匀50毫秒,最低30多毫秒,高90多毫秒
String:
1 public void testString() {
2 long start = System.currentTimeMillis();
3 String s = ;
4
5 for (int i = 0; i < COUNT; i ++) {
6 s += STR_INIT;
7 }
8
9 long end = System.currentTimeMillis();
10
11 System.out.println(Str 耗时: + (end - start));
12 }
运行成果:2分多钟(是StringBuffer,StringBilder的上千倍)
代码申明:
for轮回的次数(COUNT)为 10000
StringBuffer和StringBuilder的差别:
StringBuffer——线程安然的
StringBuilder——非线程安然
JDK API建议:若是不涉及线程题目,建议应用StringBuilder
小我建议:当须要字符串做拼接时,应用StringBuilder吧!
所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》