简述StringBuilder类
与String的+操作一样,StringBuilder也能进行拼接,但它的拼接操作要比String的+操作效率要高,因为在JDK8及以后,String+操作的底层都是StringBuilder,String的+操作,没有一个单等赋值,底层就会创建一个StringBuilder对象,所以说StringBuilder的效率要比String+操作的效率要高。
StringBuilder的构造方法
public StringBuilder();
public class Test01 {
public static void main(String[] args) {
//使用无参数构造方法创建对象
StringBuilder sb = new StringBuilder();
System.out.println(sb); //空白
}
}
public StringBuilder(String str);
public class Test01 {
public static void main(String[] args) {
//使用有参数构造方法创建对象
String str = "aa";
StringBuilder sb = new StringBuilder(str);
System.out.println(sb); //aa
}
}
StringBuilder的成员方法
StringBuilder append(Object obj); //它的参数是Object任意类型的
public class Test01 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("aa");
sb.append(11);
System.out.println(sb); //aa11
}
}
String toString(); //将StringBuilder类型转换为String类型
public class Test01 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("aa");
sb.append(11);
String str = sb.toString();
System.out.println(str); //aa11
}
}
int length(); //获取长度
public class Test01 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("aa");
sb.append(11);
int len = sb.length();
System.out.println(len); //4
}
}
StringBuilder delete(int start,int end); //清空从start位置开始到end位置结束的数据,左闭右开
public class Test01 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("aa");
sb.append(11);
StringBuilder sb1 = sb.delete(0,2);
System.out.println(sb1); //11
}
}
StringBuilder reverse(); //取反
public class Test01 {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("ab");
sb.append("cd");
sb.append("ef");
StringBuilder sb1= sb.reverse();
System.out.println(sb1); //fedcba
}
}
无参构造有默认的初始长度为16字符的数组,进行字符串拼接时,直接在数组内增加内容,数组长度不够时,StringBuilder 会自动扩容。
扩容的规则为:新数组长度 = 旧数组的长度*2+2。