String、StringBuilder、StringBuffer的区别?

简单来说就是StringBuilder和StringBuffer操作的是对象值,而String操作的是对象的地址值。

值操作

String的值是放到常量池里面然后将地址值给对象,改变值的时候是重新在常量池创建一个新的值,再将这个新的值给之前的对象覆盖,原有的字符串还是存在常量池里面直到被垃圾回收站回收;但是StringBuilder和StringBuffer是直接操作其对象本身的数据,它们的本质是不一样的。

运行速度/线程安全

StringBuilder运行速度最快,其次是StringBuffer,再然后是String。String是最慢的应该很好理解,String对象进行的操作实际上是一个不断创建新的对象并且将旧的对象回收的一个过程,所以执行速度很慢;StringBuilder没有被锁所修饰,本身线程不安全,线程不安全一般都速度快;StringBuffer是被锁修饰的,所以相对来讲比Builder慢,但是比String要快。

应用场景

StringBuilder因为线程不安全,速度快,所以只能在单线程条件下在字符串缓冲区的大量操作;StringBuffer线程安全,所以可以在多线程条件下在字符串缓冲区的大量操作;String速度慢,所以适用于少量的字符串操作

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值