String,StringBuilder,StringBuffe

作者: Real_man | 来源:发表于2018-03-20 16:40 被阅读32次

    简述

    StringBuilder 对比 StringBuffer

    • StringBuilder是非线程安全
    • StringBuffer是线程安全的。

    StringBuilder和StringBuffer其余的特性都是一样的,他们与String的区别:

    • StringBuilder与StringBuffer的对象存储在堆中,String对象存储在Constant String Pool(字符串常量池)
    • 它们两个是可变对象。String一旦创建无法修改,并且String是线程安全的。
      参考: 为什么字符串类是Final的?

    剖析

    1. 点进去JDK的源码,一眼就看出StringBuilder与StringBuffer差别。


      StringBulder继承AbstractStringBuilder
      StringBuffer继承AbstractStringBuilder
    2. StringBuidler与StringBuffer的调用方式都一致,只不过StringBuffer加了synchronized.

    StringBuilder方法 StringBuffer方法
    1. 看到这我们就明白StringBuilder与StringBuffer的关系了。本质上它们都是改变char数组中内容,来构建字符串,它们对外公开了修改char数组的方法,而String未公开。

    几个有用的方法

    • System.arraycopy(value, srcBegin, dst, dstBegin, srcEnd - srcBegin);
    • StringBuilder的reverse方法,实现字符串反转

    面试题

    1. string、stringbuilder、stringbuffer区别
    2. String类为什么是final的
    3. 说说String的常用方法
    charAt
    trim
    length
    format
    substring
    contains
    join
    equals
    isEmpty
    concat
    replace
    equalsignoreCase
    split
    toLowerCase
    toUpperCase
    valueOf
    

    最后

    面试高频问题。

    相关文章

      网友评论

        本文标题:String,StringBuilder,StringBuffe

        本文链接:https://www.haomeiwen.com/subject/usybqftx.html