008-Java的StringBuilder和StringBuffer

2020-12-13 13:46

阅读:420

  • StringBuilder 于是乎, 不需要关注线程安全和无中间拼接对象的StringBuilder产生了。与StringBuffer没差,只是去掉了线程安全。
    因此, 当我们有多字字符串拼接行为, 尽量避免使用String更为合适。同时,尽量预估字符串大小,设置好capacity,避免扩容带来的额外开销(因为扩容会重新开辟空间进行数组的移植)。
    StringBuffer和StringBuilder都继承AbstractStringBuilder,底层均是利用可修改的char数组。

    String常量池

    String常量池是Java为了避免同样的字符串常量存在多分拷贝产生大量String对象所引入的。
    策略: (1)创建一个字符串时(String str = "aabbcc"), 首先检查常量池中是否有值相同的字符串对象, 如果有, 则不会再次创建,而是直接将引用传递; 如果没有, 则在常量池中创建响应的字符串, 然后将引用传递。(2)但是当使用new String("aabbcc")进行字符串创建时, 则不会检查常量池是否存在此字符串常量, 也不会在常量池创建, 而是直接在堆中创建相应的对象。


  • 评论


    亲,登录后才可以留言!