JAVA中的String StringBuffer StringBuilder

String StringBuffer StringBuilder

相信很多JAVA初学者和我一样,在日常的学习中,经常碰到String Stringbuffer StringBuilder,但是不清楚它们之间有什么关系,又为什么产生了它们,在这里结合网上的资料以及自己的理解,做一些小小的总结,方便查找

"字符串"可以说在任何编程语言中,都占有一席之地,而对于JAVA来说,为了处理"字符串"相关的问题,就产生了String,StringBuffer,StringBuilder ,接下来,我们分别讲一下它们的使用方法以及之间的区别

* String (字符串常量)

对于String类来讲的话可以说是我们处理字符串最常用的类,下面展示一些关于String类最基础的使用方法:
在这里插入图片描述
下面是运行结果:
在这里插入图片描述
在这里插入图片描述
还有一点对于String类最重要的一点 就是 String类的值不能被修改! 继续看如下图的例子:
在这里插入图片描述
在这里插入图片描述
从输出结果就可以看出来 原str的值并没有被修改 也就是说str.replace()产生了一个新的对象,name,如果我们需要对字符串需要多次操作呢,比如我们需要给字符串后面不停的加入很多的数据呢? 如果继续使用String类的话,我们每次的操作都会产生一个新的String类的对象,无疑代码将是非常低效的,于是就诞生了StringBuffer以及StringBuilder

* StringBuffer & StringBuilder(字符串变量)

这两个类的诞生可以说都是为了解决上面的问题,对于这两个类的对象进行操作不会产生新的对象,但是它们最大的不同的点就在于线程安全问题。就是说,如果问题的处理不需要关心线程安全问题的话,推荐使用StringBuilder。因为单线程情况下不考虑线程安全的话StringBuilder 相较于 StringBuffer 略有速度优势;然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

做一个小的速度测试就很清楚的看到String和它们两个的差距:
在这里插入图片描述

总结:

  运行速度:StringBuilder >  StringBuffer > String
  单线程字符串操作 : StringBuilder
  多线程字符串操作 : StringBuffer
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值