常见面试题十一--请简述String和StringBuffer之间的区别

StringStringBuffer的对象都表示一个字符串,他们之间最重要的区别是String对象一旦被创建之后,其内容是不可以改变的。而StringBuffer对象的值则可以任意的修改。因为String类采用了“不变模式”,无论是使用字符串连接符还是使用substring等函数对String对象的修改,其实都会返回一个新的String对象。这样做的好处主要在于字符串对象一旦创建,其状态就不再发生改变,所以是线程安全的,可以在线程之间共享,而不需要同步。但是由于每次修改都要产生新对象,所以在进行连接操作时,就会创建临时对象来保存结果,从而降低了性能。而StringBuffer则不存在这样的问题,因为它是一个mutable class,对象的值可以任意修改。所以在进行字符串的连接操作时应该先使用该类的append方法进行连接,再用toString方法将其转换成String对象。这样做不需要生成临时对象,所以效率比较高。这两者另一个区别就是String对象可以直接用字面量赋值,而不需要调用构造函数。如果把同一个字面量赋值给多个String类型的引用,那么这些引用实际上是指向对内存当中的同一地址。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值