java

String、Stringbuffer、StringBuilde

2018-04-13  本文已影响2人  n油炸小朋友

执行速度上的区别

一般情况下:StringBuilder > StringBuffer > String

String执行速度慢的原因

因为String是字符串常量,是不可改变的对象。
在执行

 String s = "abcd";
  s = s+"cdf";

JVM是这样解析这段代码的:首先创建对象s,赋值"abcd",然后再创建一个新的对象s赋值"abcdcdf",由于这种机制,每当用String操作字符串时,实际上是在不断的创建新的对象,而原来的对象就会变为垃圾被GC回收掉,这样执行效率很低。

特殊例子
String str = "a" + "b" + " c";
StringBuffer builder = new StringBuilder("a").append(" b").append("c");

这时候string比StringBuffer快,理由是String str = "a" + "b" + " c";事实上是String str = "abc";要是

String str1 = "a";

String str2 = "b";

String str3 = "c";

String str4 = str3 +str2+ str1;

那么,这时候jvm就会按照原来的方式来做。

StringBuffer和StringBuilder的区别

来看看源码:


stringBuffer.png stringbuilder.png

总结

1.如果要操作少量的数据用 String

2.单线程操作字符串缓冲区或者保证线程安全的情况下操作大量数据 StringBuilder

3.多线程操作字符串缓冲区 下操作大量数据 StringBuffer

上一篇下一篇

猜你喜欢

热点阅读