/** * StringBuffer 与 StringBuilder * - StringBuffer的底层实际上是一个byte数组, * - 向StringBuffer中放字符串实际上是放到了byte数组中, * - StringBuffer的默认初始化容量是16 * - 今后如果需要进行大量的字符串拼接,建议使用JDK中自带的: * java.lang.StringBuffer 或 java.lang.StringBuilder * - 如何优化StringBuffer的性能: * 在创建StringBuffer的时候尽肯能给定一个比较合理的初始化容量值,减少扩容次数,提高运行效率 * - StringBuffer和StringBuilder的区别 * StringBuffer方法中有synchronized关键字来修饰,所以在多线程环境下运行是安全的 * StringBuilder方法在多线程环境下运行是不安全的 */ public class StringBufferText { public static void main(String[] args) { // 创建一个初始化容量为16(byte数组的长度)(字符串缓冲器对象) StringBuffer stringBuffer = new StringBuffer(); // 用append()方法拼接字符串,append译为追加 stringBuffer.append("a"); stringBuffer.append(123); stringBuffer.append(3.14); stringBuffer.append(true); stringBuffer.append(100L); // 输出拼接后的结果,下面两行代码中写.toString()与不写.toString()效果是一样的。 System.out.println(stringBuffer);//a1233.14true100 System.out.println("+++++++++++++++++++++++++++++"); System.out.println(stringBuffer.toString());//a1233.14true100 // 指定初始化容量创建StringBuffer对象(字符串缓冲区对象) StringBuffer stringBuffer1 = new StringBuffer(99); stringBuffer1.append("hello"); stringBuffer1.append("zhangsan"); stringBuffer1.append("lisi"); System.out.println(stringBuffer1);//hellozhangsanlisi } }
class StringBuilderText { public static void main(String[] args) { // 使用StringBuilder也是可以完成字符串的拼接 StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(111); stringBuilder.append("hello"); stringBuilder.append(false); System.out.println(stringBuilder);//111hellofalse System.out.println(stringBuilder.length()); stringBuilder.deleteCharAt(stringBuilder.length() - 1);//删除字符串的最后一个字符 System.out.println(stringBuilder); } }