1 package cn.learn; 2 /* 3 字符串缓冲区 -缓冲可提高效率 4 java.lang.StringBuilder 5 字符串的底层是一个被final修饰的数组,不能改变,是一个常量 6 private final byte[] value; 7 也就是说在字符串相加时,会生成多个字符串,占用空间效率低下 8 eg:String str = "a"+"b"+"c" 9 会有a,b,c,ab,abc五个字符串,jdk1.5以后用的是SttingBuilder.append("a").append. 10 11 而StringBuilder类,可提高效率(可以看成一个长度可以变换的字符串) 12 byte[] value = new byte[16]; //默认长度16 13 注:StringBuilder在内存中始终是一个数组,占用空间少,效率高,如果超出了StringBuilder 14 的容量会自动扩容 15 底层是一个没有被final修饰的数组,可以改变长度 16 17 使用StringBuilder,添加数据元素不会改变数组的源地址,即不会生成新数组 18 19 20 */ 21 public class StringBuilderApi { 22 public static void main(String[] args) { 23 //无参构造,默认长度16,里面为空白 24 StringBuilder str = new StringBuilder(); 25 //有参构造,实际是把String转换了StringBuilder 26 StringBuilder str1 = new StringBuilder("cn.learn"); 27 System.out.println(str1); //cn.learn 28 //添加数据,返回对象当前本身即可以再进行添加 append(附加),即不生成新数组 29 System.out.println(str1.append(".huxiaobai").append(".dada")); 30 31 32 //toString,可以将StringBuilder转换为toString,有参构造可以传对象 33 StringBuilder toStr= new StringBuilder(str1); 34 System.out.println(toStr.toString()); 35 36 } 37 38 39 }