#StringBuilder的引入
为什么引入StringBulider
主要引入是因为String类型如:String c=“a”+“b”+“c”;浪费空间。String底层是被final修饰的字符数组。而StringBuilder是缓冲区,且没有被final修饰
StringBuilder两个构造方法
StringBuilder()构造一个没有参数,初始容量为16
StringBuilder(String str)构造一个字符串生成器,并初始化为指定的字符串内容。
代码举例:
public class Demo01StringBuilder {
public static void main(String[] args) {
//空参构造方法
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1,"+bu1);//初值为空
System.out.println(bu1.length());
//带参数构造方法
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2,"+bu2);
}
}
显示效果:
bu1,
0
bu2,abc
stringBulider的append方法
代码:
public class Demo02StringBuilderappend {
public static void main(String[] args) {
StringBuilder bu1 = new StringBuilder();
StringBuilder bu2 = bu1.append("abc");
boolean c=(bu1==bu2);//地址值的比较。实际情况是bu1的地址值传递给了bu2;
System.out.println(bu1);
System.out.println(bu2);
System.out.println(c);
bu1.append("defg");
bu1.append("hijklmn");
System.out.println(bu1);
bu2.append("你是我心中的一首歌!");
System.out.println(bu2);//验证了上面所说的将bu1的地址值传bu2,随让是两个变量但是用的是同一个地址
bu1.append("驴肉火烧我喜欢吃!").append("我还喜欢吃肉夹馍!");//支持链式增加!
System.out.println(bu1);
}
}
显示效果
abc
abc
true
abcdefghijklmn
abcdefghijklmn你是我心中的一首歌!
abcdefghijklmn你是我心中的一首歌!驴肉火烧我喜欢吃!我还喜欢吃肉夹馍!
StringBuilder与string的相互转换
代码:
public class Demo03StringBuildertostring {
public static void main(String[] args) {
String str="我爱你!";
System.out.println("str:"+str);
StringBuilder bu1 = new StringBuilder(str);
bu1.append("中国!!!");
System.out.println("bu1:"+bu1);
String c=bu1.toString();
System.out.println("StringBuilder转换后成String(c):"+c);
}
}
显示效果:
str:我爱你!
bu1:我爱你!中国!!!
StringBuilder转换后成String©:我爱你!中国!!!