JavaSE--StringBuffer类与StringBuilder类

发布时间 2023-08-15 21:43:27作者: 洛小依ovo

开发中需要大量字符串的拼接操作,建议使用jdk中自带的StringBuffer与StringBuilder类

1、StringBuffer

优化StringBuffer的性能

  在创建StringBuffer的时候尽可能给定一个合适的初始化容量

  最好减少底层数组的扩容次数。预估计一下,给一个大一些初始化容量

// 创建一个初始化容量为16个byte[] 数组(字符串缓冲区对象)
// 本身自定义的容量就为16
StringBuffer stringBuffer = new StringBuffer();

// 拼接字符串,以后拼接字符串统一调用 append()方法。
// append是追加的意思
stringBuffer.append("a");
stringBuffer.append("b");
stringBuffer.append(3.14);
// append方法底层在进行追加的时候,如果byte数组满了,会自动扩容。
stringBuffer.append(100L);
System.out.println(stringBuffer.toString());

// 指定初始化容量的StringBuffer对象(字符串缓冲区对象)
// 优化了StringBuffer的性能
StringBuffer sb = new StringBuffer(30);
sb.append("hello");
sb.append("world");

System.out.println(sb);

 2、StringBuilder

  使用中与StringBuffer并无区别

3、StringBuffer和StringBuilder的区别

  StringBuffer中的方法都有:synchronized关键字修饰。表示StringBuffer在多线程环境下运行是安全的

  StringBuilder中的方法都没有:synchronized关键字修饰,表示StringBuilder在多线程环境下运行是不安全的