您当前的位置: 首页 >  面试

梁云亮

暂无认证

  • 2浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

面试题:String、StringBuffer和StringBuilder的异同

梁云亮 发布时间:2021-05-20 15:21:42 ,浏览量:2

String 类

String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。 对String的操作都是改变赋值地址而不是改变值。

StringBuffer是可变类

StringBuffer是可变的、线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。

StringBuilder

StringBuffer和StringBuilder类功能基本相似,主要区别在于StringBuffer类的方法是线程安全的,而StringBuilder不是线程安全的,相比而言,StringBuilder类会略微快一点。

对于经常要改变值的字符串应该使用StringBuffer和StringBuilder类。 在这里插入图片描述

总结
  • String、StringBuffer、StringBuilder在JDK中都被定义为final类,这意味着他们不可以被继承。
  • String性能较差,因为对String类型进行改变的时候都会重新生成一个新的String对象,这在字符串拼接操作时很明显
  • 内容经常改变的字符串不应该使用String,如果不考虑多线程,则应使用StringBuilder
  • StringBuffer生成一个对象后,在进行字符串拼接操作时,调用append方法即可,不会产生新的对象,仅对对象本身进行操作,性能比String要高。
  • StringBuffer是线程安全的,因此适合在多线程中使用,也正因为如此,速度跟StringBuilder相比会比较慢。
  • StringBuilder的使用方法跟StringBuffer类似,但其是非线程安全的,因此一般常用于单线程,效率比StringBuffer高。

注意:Java 8默认使用StringBuilder拼接字符串,所以不用显示的使用StringBuilder了,直接用“+”就可以了。

关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.0394s