string、stringbuilder,stringbuffer使用场合

先总结下各自使用场景:

少量字符串操作: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操作大量字符串是不是应该是相差无几的?

你可能感兴趣的:(string、stringbuilder,stringbuffer使用场合)