String、StringBuffer、StringBuilder的区别

本文对比了Java中不可变的String、线程安全的StringBuffer和非线程安全的StringBuilder的特性,重点讲解了它们在多线程环境下的使用场景和效率差异。建议在循环拼接时优先选择StringBuilder以提高性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、三者特点:

  1. String:不可变字符串、字符串是常量、创建后不可更改
  2. StringBuffer:可变字符串、线程安全、做线程同步检查、效率慢
  3. StringBuilder:可变字符串、线程不安全、不做线程同步检查、效率快
  4. StringBuffer、StringBuilder两者常用方法:

1.append() 2.insert() 3.delete() 4.deleteCharAt()

二、StringBuffer与StringBuilder的区别:

  1. 因为StringBuffer所有的公开方法是用synchronized修饰的,所以线程安全,但效率慢,而StringBuilder的公开方法没有被synchronized修饰。
  2. StringBuffer适用于在多线程操作同一个StringBuffer的场景,而StringBuilder适用于在单线程场合操作。
StringBufferStringBuilder
线程安全非线程安全
线程同步非线程同步
始于Java1.0始于Java1.5
效率慢效率快
  • 注意事项:

用循环进行字符串拼接时要用StringBuilder,千万不能用String。

原因:String为不可变字符串,每添加一个字符就是创建一个对象,大大消耗内存和运行时间。

                                                                                                           ---end---

                                                                                                       扫描下方二维码

                                                                                                   添加好友,备注【交流】

                                                                                        可私聊相互学习,共同进步,资源共享

                   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值