String StringBuilder 和StringBuffer之间的区别

StringBuffer 和StringBuilder的区别

相同点

都是字符串的缓冲区,都是字符串的生成器,都是可变的字符序列。

不同点

1.出现版本不同

StringBuffer 在jdk1.0出现的

StringBuilder在jdk1.5出现的

2.线程安全线不同

StringBuffer是线程安全的,在多线程环境下仍然保证数据安全。

StringBuilder是线程不安全的,在多线程环境下无法保证数据安全。

3.效率的不同

StringBuffer效率低

StringBuilder效率高

String和StringBuilder的联系

String是不可修改的,底层是final数组

StringBuilder是可以修改的,可变长度,底层是普通数组

String涉及变量拼接,在堆中转换成StringBuilder实现,StringBuilder调用tuString方法返回String类型对象

这样做内存中会创建更多的对象,而且转换过程也比较耗时

StringBuilder使用append拼接字符串就不存在以上问题

String和StringBuilder拼接字符串的区别

使用string类型拼接字符串,时间和空间上都非常浪费

1.创建一个stringbuilder的存储空间,大小为第一个字符串的长度+16

2.将第一个字符串添加到缓冲区

3.将第二个字符串添加到缓冲区

4.将缓冲区对象转成字符串对象(创建一个新的字符串对象)

5.返回该字符串对象

使用stringbuilder拼接字符串时间和空间上都非常节省,无论循环多少次都只创建两个对象

1.创建一个新的stringbuilder的存储空间

2.在stringbuilder的基础上进行添加,不创建新的字符串

3.循环完成后将stringbuilder转换成string

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值