美文网首页java
String、Stringbuffer、StringBuilde

String、Stringbuffer、StringBuilde

作者: n油炸小朋友 | 来源:发表于2018-04-13 16:00 被阅读2次

执行速度上的区别

一般情况下: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
  • StringBuilder:线程非安全的

  • StringBuffer:线程安全的

总结

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

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

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

相关文章

网友评论

    本文标题:String、Stringbuffer、StringBuilde

    本文链接:https://www.haomeiwen.com/subject/qjockftx.html