码迷,mamicode.com
首页 > 其他好文 > 详细

String、StringBuffer和StringBuilder比较

时间:2020-04-03 23:29:00      阅读:79      评论:0      收藏:0      [点我收藏+]

标签:不可   优先   并且   线程   执行时间   速度   定位   回收对象   改变   

从执行速度效率来说:

  String为字符串常量,一旦创建就不能修改,第一次创建一个String对象,实例化后有初始值;当第二次创建String对象后,再次赋值,表面上看是改变了第一个String对象的初始值,其实并不是,第二次创建后,第一个对象则被JVM的GC回收,因为String为常量,一旦创建则不可更改,所有创建第二个对象时,第一个对象被回收,所以使用String创建字符串对象是一个不断回收对象并且创建新对象的过程,所以执行速度很慢。

  StringBuffer和StringBuilder都为字符串变量,创建以后,仍然可以发生更改,而不再像String那样创建再回收,所以执行时间较短,效率较高。

从线程安全来说:

  StringBuffer是线程安全的可变字符序列,类似于String的字符串缓冲区,在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。可将字符串缓冲区用于多个线程,并且是安全的。其主要方法为append 和 insert 方法,append方法主要是将新加的字符加入缓冲区的末端,但是insert方法可以将新加字符加入指定位置,在多线程情况下,可用此来创建字符串对象。

  StringBuilder是非线程安全的可变字符序列,jdk5.0后加入,其api与StringBuffer兼容,但不保证同步,用在字符串缓冲区被单个线程使用的时候,所以在单线程情况下优先采用该方法创建字符串对象,其执行效率比StringBuffer要高。

String、StringBuffer和StringBuilder比较

标签:不可   优先   并且   线程   执行时间   速度   定位   回收对象   改变   

原文地址:https://www.cnblogs.com/wuhao-0206/p/12629610.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!