玩命加载中 . . .

StringBuffer和StringBuilder(32)


StringBuffer和StringBuilder

  1. Java.lang.StringBuffer和Java.lang.StringBuilder是什么?

    答:是一个字符串缓冲区

  2. 工作原理

    预先在内存中申请一块空间,以容纳字符序列,如果预留的空间不够用,则进行自动扩容,以容纳更多字符序列

  3. Java.lang.StringBuffer和Java.lang.StringBuilder 和 String最大的区别是什么?

    答:String是不可变得字符序列,存储字符串常量池中

    ​ StringBuffer底层是一个char数组,但是该char数组是可变的并且可以自动扩容

  4. StringBuffer 和 StringBuilder的默认初始化容量是16

    • 最好在创建 stringBuffer之前,预测 StringBuffer的存储字符数量
    •  然后再创建 stringBuffer的时候采用指定初始化容量的方式创建StringBuffer
      
    •  为了减少底层数组的拷贝。提高效率
      
  5. 在使用字符串拼接时使用String类型会消耗很大内存,可以使用StringBuffer和StringBuilder来进行字符串的拼接

  6. StringBuffer和StringBuilder的区别?

    •  stringBuffer是线程安全的。(可以在多线程的环境下使用不会出现问题.)
      
    •  stringBui1der是非线程安全的。(在多线程环境下使用可能出现问题.)
      

示例代码:

            // 创建字符串缓冲区对象
            StringBuffer s1 = new StringBuffer(); // 默认初始化=16
            // 可以向StringBuffer中追加字符串
            String[] s2 = {"Sport","PhysicalEducation","Sleep","Food"};
            for (int i = 0; i < s2.length; i++) {
                if (s2.length-1==i) {
                    s1.append(s2[i]);
                }else {
                    s1.append(s2[i]);
                    s1.append(",");

                }
            }
            System.out.println(s1); // ==》Sport,PhysicalEducation,Sleep,Food

StringBuffer和StringBuilder的区别


文章作者: 小靳同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小靳同学 !
评论
 上一篇
包装类型(33) 包装类型(33)
包装类型Java中八种基本数据对应的包装类型 基本数据类型 包装类型 包装名称 byte java.lang.Byte; 字节型
2021-09-19
下一篇 
常用类—String类(31) 常用类—String类(31)
常用类—String类 String类是不可变类,也就是说String对象声名后,将不可修改 字符串一旦创建不可再改变,即:”abc”字
2021-09-18
  目录