StringBuilder
java.lang.StringBuilder 字符串缓冲区,可以提高字符串的效率
String类:
String是字符串常量,,它们的值在创建后不能更改
字符串底层是一个被final修饰的数组,不能改变,是一个常量 private final byte [] value
字符串的相加,内存中就会有多个字符串,占用空间,效率低下
如:String s="a"+"b"+"c"="abc"
"a" "b" "c" 3个字符串
"a" +"b" "ab" 1个字符串
"ab"+“c” 1个字符串 5个字符串 浪费空间
StingBuilder:
字符串缓冲区,可以提高字符串的操作效率(看成一个长度可以改变的字符串)
底层也是一个数组,但是没有被final修饰,可以改变长度
byte[] value = new byte[16];
"a"+"b"+"c"="abc"
0-15的数组,里面填入 a b c
StringBuilder在内存中始终是一个数组,占用空间小,效率高
如果超出了StringBuilder的容量,会自动的扩容
StringBuilder的构造器
/*
* StringBuilder有两个构造器
* public StringBuilder():构造一个空的StringBuilder容器。
* public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。
* */
StringBuilder s = new StringBuilder();//空参
System.out.println(s);
StringBuilder ss = new StringBuilder("abc");//有参
System.out.println(ss);
StringBuilder的成员方法
append :
/*
* public StringBuilder append(...):添加任意类型数据的字符串形式,并返回当前对象自身。
* 返回当前对象自身:用此方法,不用考虑接收类型,永远是自己本身
* */
StringBuilder sss = new StringBuilder();
sss.append("abv");
sss.append(2);
sss.append(3.2);
System.out.println(sss);
toString
/*
* public String toString():将当前StringBuilder对象转换为String对象。
*
* String----->StringBuilder 直接是使用构造器 StringBuilder s = new StringBuilder(String str)
* StringBuilder---->String 使用StringBuilder里的toString 方法
**/
String a="hello";
StringBuilder sa = new StringBuilder(a);//将String类型的a转换成了StringBuilder类型
sa.append("world");
System.out.println(sa);
String string = sa.toString();//将stringBUilder类型转换成了String类型
System.out.println(string);
reverse
/*
* reverse 将StringBuilder里的内容全部翻转过来
* */
StringBuilder saa = new StringBuilder("helloWorld");
StringBuilder reverse = saa.reverse();
System.out.println(reverse);