String,StringBuffer和StringBuilder的区别

1、String类型

String类型是不可变的,因为它的类和属性都是final修饰的,就是在创建到销毁这个值都不可变,当你在对一个String字符串的值进行修改或重新赋值时,实际上已经不是原来的那个对象,而是重新创建了一个新的字符串对象,之前的没有被使用的话就会被当做垃圾回收,所以不仅效率低,更浪费内存空间,经常修改的字符串不建议使用String。

2、StringBuffer和StringBuilder(JDK1.5新增)相同点

StringBuffer和StringBuilder类型是一个字符序列可变的字符串,在操作时不会重新创建对象,可通过它提供的append,insert等一系列方法进行更改,当生成想要的字符串后可用toString方法转换成String类型,并且Buffer和Builder都有一定的缓冲区容量(初始化长度16的char[]数组),当值不超过容量时,不会分配新的内容,如若超出就会以当前容量上×2+2作为新的长度,比如:超过16后,就是16×2+2就是34。

3、不同点,区别

StringBuilder其实和StringBuffer基本一样,包括构造器和方法也基本相同,不同的在于StringBuffer是线程安全的,而StringBuilder线程不是安全的,所以buffer的安全性较高,效率低,而builder的安全性低,效率较高,注意点一目了然。

总结:
String:字符序列不可变,经常改变的字符串不建议使用,影响性能,浪费内存
StringBuffer:字符串序列可变,线程安全,效率低
StringBuilder:字符串序列可变,线程不安全,效率高,

点个赞吧!谢谢!

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值