Java中String、StringBuilder和StringBuffer的区别

在网上查找知识点时很容易产生当时看了就会,下次又遇到这个知识点时却不得不再次上网查看这个知识点的毛病。于是打算以后将自己领悟不清的知识点写下来(相信这也是大多数人喜欢写博客的原因吧),一方面为了给后来者借鉴,另一方面也是为了自己加深印象和自己对知识的总结。

今天就来谈谈自己对java中String、StringBuilder和StringBuffer知识点的理解。

        String字符串常量
        StringBuffer字符串变量(线程安全)
        StringBuilder字符串变量(非线程安全)

String

        所谓常量,即该对象的值已经被赋予了,不能再更改。若非要更改,则只能再重新创建另一个对象,在这个新创建的对象上再进行赋值。因此,每次在对String类型的对象进行改变的时候其实都等同于生成了一个新的String对象,然后将指针指向新的String对象,所以经常改变内容的字符串最好不要用String,因为每次生成对象都会对系统性能产生影响,特别当内存中无引用对象多了以后,JVM的GC就会开始工作,那速度是一定会相当慢的。

StringBuffer

        所谓变量,即是可以随时变化的量。如果对StringBuffer对象进行改变,每次结果都会对StringBuffer对象进行操作,而不是生成新的对象。所以一般字符串要经常变化的话我推荐使用StringBuffer。

StringBuilder

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

题外话:现在很多互联网公司面试java的面试官都喜欢问这样一个问题,

        请你谈谈StringBuffer和StringBuilder的区别。

        大多数人肯定会直接说前者是线程安全的而后者是非线程安全的。其实这个时候才是面试官真正想问的,他会顺着你的回答又问你,那请你谈谈什么是线程…balabalabala。哈哈,要想顺利通过面试,所以对知识的了解还是全面点吧~!

转载自: 点击打开链接


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值