【Java】StringBuilder类

String类
         字符串是常量,它们的值在创建之后不能更改
         字符串的底层是一个被final修饰的数组,不能改变,是一个常量
         private final byte[] value;
进行字符串的相加,内存中就会有多个字符串,占用空间多,效率低下。
eg:
String s = "a"+"b"+"c";
                 "a" "b" "c" 3个字符串
String s     "a" +"b"   "ab" 1个字符串
                 "ab"+"c" "abc" 1个字符串
一共要开辟5个字符串的空间
 
StringBuilder类:字符串缓冲区,可以提高字符串的操作效率(看做长度可以变换的字符串)
底层也是一个数组,但是没有被final修饰,可以改变长度
byte[] value = new byte[16];
【Java】StringBuilder类
StringBuilder在内存中始终是一个数组,占用空间少,效率高
 
java.lang.StringBuilder 
构造方法:
StringBuilder()构造一个不带任何字符的字符串生成器,其初始容量为16个字符
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容
成员方法:
 
public StringBuilder append(...) 任意参数类型
不需要任何返回值,会在原来的字符串上面直接修改
public class demoStringBuilder {
public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
System.out.println(bu1);
StringBuilder bu2 = new StringBuilder("I am a string.");
System.out.println(bu2);
StringBuilder bu3 = bu1.append("abc");
System.out.println(bu1);
System.out.println(bu3);
System.out.println(bu1==bu3);
bu1.append("sdf");
bu1.append("1323");
bu1.append(1);
System.out.println(bu1);
bu1.append(324).append("tghtrg").append('');
System.out.println(bu1);
}
}
【Java】StringBuilder类
 
成员方法:
public String toString();
StringBuilder和String相互转换
String->StringBuilder  : StringBuilder bu = new StringBuilder("XXX");
StringBuilder->String :public String toString();
 
【Java】StringBuilder类