1.StringBuilder的原理
String类:
字符串是常量,它们的值在创建后不可以改变。字符串的底层是被final修饰的数组,不能改变,是个常量
private final byte[] value;
StringBuilder类:
字符串缓冲区,可以提高字符串的操作效率(可以看作一个长度可以发生变化的字符串)。底层也是一个数组,但是没有被final修饰,可以改变长度。
byte[] value = new byte[16]
StringBuilder在内存中始终是一个数组,占用空间少,效率高。如果内容超出了StringBuilder的容量,StringBuilder会自动扩容
2.StringBuilder的方法
2.1.StringBuilder的构造方法
package stringBuilder.demo1;
/**
* StringBuilder的构造方法
* 空参构造 StringBuilder():构造一个不带任何字符的字符串生成器,其初始容量为16个字符
* 带参构造 StringBuilder(String str):构造一个字符串生成器,并初始化为指定的字符串内容
*/
public class Demo01StringBuilder {
public static void main(String[] args) {
//空参构造 StringBuilder()
StringBuilder bu1 = new StringBuilder();
System.out.println("bu1:"+bu1);//bu1:
//带参构造 StringBuilder(String str)
StringBuilder bu2 = new StringBuilder("abc");
System.out.println("bu2:"+bu2);//bu2:abc
}
}
2.2StringBuilder的成员方法
1.append()
package stringBuilder.demo1;
/**
* StringBuilder的成员方法
* public StringBulider append(..):添加任意类型数据的字符串形式,并返回当前对象自身
*/
public class Demo02StringBuilder {
public static void main(String[] args) {
//创建StringBuilder对象
StringBuilder bu = new StringBuilder();
System.out.println("bu:"+bu);
System.out.println("============");
//使用StringBuilder的append方法
StringBuilder bu1 = bu.append("abc");
System.out.println("bu1:"+bu1);
System.out.println("============");
//引用类型,使用“==”比较时比较的是地址值
System.out.println(bu==bu1);
System.out.println("===================");
/**
* 使用append方法无需接收返回值
* 所以当我们调用StringBuilder的append方法时可以使用链式编程,即
* bu.append(123).bu.append("hello").bu.append(6.66).bu.append("你好");
*/
bu.append(123);
bu.append("hello");
bu.append(6.66);
bu.append("你好");
System.out.println(bu);
}
}
运行结果
2.toString()
package stringBuilder.demo1;
/**
* StringBuilder和String可以相互转换
* String --> StringBuilder:可以使用StringBuilder的构造方法StringBuilder(String str)
* StringBuilder --> String:可以使用StringBuilder的toString()方法
*/
public class Demo03StringBuilder {
public static void main(String[] args) {
//String --> StringBuilder
String str = "hello";
System.out.println("str:"+str);
//利用StringBuilder的构造方法将String对象变成StringBuilder对象
StringBuilder bu1 = new StringBuilder(str);
//往StringBuilder对象里面添加数据world
bu1.append("world");
System.out.println("bu1:"+bu1);
System.out.println("============");
//StringBuilder --> String
String s = bu1.toString();//利用StringBuilder的toString方法将StringBuilder对象变成String对象
System.out.println("s:"+s);
}
}
运行结果