首页 > 其他 > 详细

String、StringBuffer、StringBulider

时间:2020-09-10 12:43:12      阅读:64      评论:0      收藏:0      [点我收藏+]

String是不可变字符串。这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且浪费大量优

StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量 

StringBuilder也是可变类,但是是非线程安全的操作类。

String StringBuffer StringBuilder
不可变 可变 可变
  线程安全 线程不安全
  多线程 单线程

举个栗子:

你母亲让你给她拿个苹果,过一会让你又拿了个梨........

String就相当于,用一个盘子(在内存种开辟一个空间)装苹果,过一会又用一个新盘子(又开辟了一块空间)装了梨。所以现在就使用了两个内存空间。

而StringBuffer就是,我用一个盘子给你装苹果,过一会我继续用这个盘子装梨。

而StringBulider就是,我虽然是同一个盘子装的,省了空间。但是我为了追求速度。无法保证安全。

对于三者的使用场景建议:

对于三者使用的总结: 1.如果要操作少量的数据用 = String
           2.单线程操作字符串缓冲区 下操作大量数据 = StringBuilder
           3.多线程操作字符串缓冲区 下操作大量数据 = StringBuffer

 

如果有什么不恰当的地方请评论或私信。谢谢。

String、StringBuffer、StringBulider

原文:https://www.cnblogs.com/dxj315/p/13644664.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!