概述
我们如果对字符串进行拼接操作,每次拼接,都会构建一个新的String对象,既耗时,又浪费空间。而StringBuffer就可以解决这个问题,StringBuffer是线程安全的可变字符序列容器。
构造方法以及常用方法
如下代码中体现
public class demo {
public static void main(String[] args) {
// public StringBuffer():无参构造方法
StringBuffer sb = new StringBuffer();
// public StringBuffer(int capacity):指定容量的字符串缓冲区对象
StringBuffer sb1 = new StringBuffer(100);
// public StringBuffer(String str):指定字符串内容的字符串缓冲区对象
StringBuffer sb2 = new StringBuffer("askjfhskj");
// public int capacity():返回当前容量:理论值
// public int length():返回长度(字符数):实际值
int capacity = sb.capacity();
int length = sb.length();
System.out.println(capacity);
System.out.println(length);
System.out.println("----------------");
int capacity1 = sb1.capacity();
int length1 = sb1.length();
System.out.println(capacity1);
System.out.println(length1);
System.out.println("----------------");
int capacity2 = sb2.capacity();
int length2 = sb2.length();
System.out.println(capacity2);
System.out.println(length2);
}
}
运行结果:
添加功能
public class demo {
public static void main(String[] args) {
// public StringBuffer append(String str):可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
StringBuffer sb = new StringBuffer();
sb.append("ajkbgajkb");
sb.append(156);
System.out.println(sb.toString());//StringBuffer也重写了toString()方法,返回的是容器的内容
// public StringBuffer insert(int offset,String str):在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
sb.insert(2, "abcd");
sb.insert(6, 158);
System.out.println(sb.toString());
}
}
运行结果:
替换和反转功能
public class demo {
public static void main(String[] args) {
//StringBuffer的替换功能:
// public StringBuffer replace(int start,int end,String str):从start开始到end用str替换,含头不含尾
StringBuffer sb = new StringBuffer("hajkg12321");
System.out.println(sb.toString());
sb.replace(2, 5, "akljfai");//将234位置的内容替换掉
System.out.println(sb.toString());
//StringBuffer的反转功能:
// public StringBuffer reverse():字符串反转
sb.reverse();
System.out.println(sb);
}
}
运行结果:
注意:上述方法返回的都是容器本身。
截取功能
public class demo {
public static void main(String[] args) {
// public String substring(int start):从指定位置截取到末尾
StringBuffer sb = new StringBuffer("ahfalkjm4556");
String s = sb.substring(5);
System.out.println(s);
// public String substring(int start,int end):截取从指定位置开始到结束位置,包括开始位置,不包括结束位置
String s1 = sb.substring(7, 10);
System.out.println(s1);
}
}
运行结果: