String StringBuffer StringBuilder

本文探讨了String(不可变)与StringBuilder和StringBuffer(可变)在内存管理、线程安全性和性能上的区别,重点讲解了Buffer类的作用原理和优势,尤其是在多线程环境中的应用和内存效率提升。

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

String StringBuffer StringBuilder区别:

String被final定义 , 他的值是不可变的,我们对String的操作,每次都会产生一个新的String对象,这样做效率低下,浪费空间
StringBuilder : 线程不安全,只能单线程操作
本身是一个可变的类,不会产生新的对象,StringBuilder对象创建的时候会有一定的缓冲容量,当字符串的大小没有超过容量时,不会分配新的容量,一旦超过,那就回自动增加容量
StringBuffer 线程安全.可变类 , 不会产生新的对象,StringBuffer对象创建的时候会有一定的缓冲容量,当字符串的大小没有超过字符串的容量时,不会分配新的容量,一旦超过,那就回自动增加容量
StringBuffer在多线程下是安全的,StringBuffer内部加了锁,所以线程是安全的 (一个作为全局变量的StringBuffer 对象先对200个字符串进行拼接,在对200个字符串进行拼接,在多线程对这个对象进行多次字符串拼接操作,不会造成字符串的丢失)

所有类名包含Buffer的类的内部实现原理是什么?

原理:Buffer即缓冲区,是包含有一定量数据的容器,缓冲区我们可以理解为一个水管,满足FIFO,如果我们不设置缓冲区,那么就会增加系统的不稳定性和安全性。比如系统对接过程中,不设置缓冲区,对于其它系统作出的请求都得立即响应,疲于奔命直至系统崩溃。而增加缓冲区成本低,可以批量处理,效率更高。

优势是什么?

优势:buffer是用来临时存储一些二进制数据的,当我们要把一大块数据从一个地方传输到另一个地方时,我们可以使用buffer对象进行传输 ; 通过buffer每次可以传输一小部分的数据,直到所有的数据都被传输完毕
不用每次都要开辟新的内存空间,只有需要的足够大时才需要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小冻梨♬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值