1.String,StringBuilder和StringBuffer的区别
String 是不可变字符串,根据实时情况使用,在循环当中尽量不要使用,因为会产生好多没用的字符串。
StringBuilder 可变字符串,线程不太安全,但效率高。
StringBuffer 可变字符串,线程安全,但效率低。
建议:如果是简单的声明一个字符串没有后续过多的操作,使用String,StringBuilder均可,若后续对字符穿做频繁的添加,删除操作,或者是在循环当中动态的改变字符穿的长度应该用StringBuilder。因为在循环中使用String会产生多余的字符串,占用内存空间。
2.StringBuilder类的构造方法
1.
StringBuilder a1=new StringBuilder();//初始长度为16
2.创建初始长度为指定长度的可变字符串
StringBuilder a1=new StringBuilder(8);//初始长度为8
3.
StringBuilder a1=new StringBuilder("abcd");//初始长度为20:传入字符串的长度+16
4.
创建的可变字符串长度=传入的字符序列的长度+16.
3.StringBuilder原理:
StringBuilder可变字符串是由字符数组来实现的。虽然字符数组创建后其长度不可变,但是当通过append()向StringBuilder可变字符串中加元素时,如果长度度不够,则创建一个新的数组(长度=原数组长度*2+2)来储存字符串,把原来字符数组中的元素复制到新字符数组中,原来的字符数组舍弃。