本文共 621 字,大约阅读时间需要 2 分钟。
先总结下各自使用场景:
少量字符串操作:string
大批量字符串操作,并且不要求线程安全:stringbuilder
大批量字符串操作,要去线程安全:stringbuffer
通常情况下的执行速度:stringbuilder > stringbuffer > string
为什么是这样一个排序?
例子1:
String a = “hello”;
String b = “world”;
String c = “haha”;
String d = a + b + c;
New stringbuilder().append(“hello”).append(“world”).append(“haha”);
前者在执行过程中会生成4个对象,后者只生成一个,所以速度后者占优,这是通常情况下。
例子2:
String a = “hello” + “world” + “haha”;
New stringbuilder().append(“hello”).append(“world”).append(“haha”);
这个例子,a会在编译期直接编译成string a = “helloworldhaha”;
而stringbuilder需要先生成一个对象,在做3次操作才能达到相同结果,所以这时候string的速度更快。
遗留问题:
如果就在单线程内,用stringbuilder和stringbuffer操作大量字符串是不是应该是相差无几的?
转载地址:http://hwiti.baihongyu.com/