StringBuffer类概述
线程安全的可变字符序列。一个类似于 String 的字符串缓冲区,但不能修改。
虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度和内容。
从 JDK 5 开始,为该类补充了一个单个线程使用的等价类,即 StringBuilder。与该类相比,
通常应该优先使用 StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
StringBuffer类的构造方法
public StringBuffer()
构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
public StringBuffer(int capacity)
指定容量的字符串缓冲区对象
public StringBuffer(String str)
指定字符串内容的字符串缓冲区对象
StringBuffer的方法
public int capacity()
返回当前容量。理论值
public int length()
返回长度(字符数)。 实际值
public static void main(String[] args){
StringBuffer sb1 = new StringBuffer();
System.out.println(sb1.length());
System.out.println(sb1.capacity());
StringBuffer sb2 = new StringBuffer("abc");
System.out.println(sb2.length());
System.out.println(sb2.capacity());
}
运行结果:
0
16
3
19
StringBuffer的添加功能
public StringBuffer append(String str)
可以把任意类型数据添加到字符串缓冲区里面,并返回字符串缓冲区本身
public static void main(String[] args){
StringBuffer sb1 = new StringBuffer();
sb1.append(100);
sb1.append("abcde");
sb1.append(true);
System.out.println(sb1);
}
运行结果:
100abcdetrue
public StringBuffer insert (int offset,String str)
在指定位置把任意类型的数据插入到字符串缓冲区里面,并返回字符串缓冲区本身
public static void main(String[] args){
StringBuffer sb1 = new StringBuffer(12345);
sb1.insert(2,"hello");
System.out.println(sb1);
}
运行结果:
12hello345
StringBuffer的删除功能
public StringBuffer deleteCharAt (int index)
删除指定位置的字符,并返回本身
public static void main(String[] args){
StringBuffer sb1 = new StringBuffer(“abcde”);
sb1.deleteCharAt(3);
System.out.println(sb1);
}
运行结果:
abce
StringBuffer的反转功能
public StringBuffer reverse()
字符串反转
public static void main(String[] args){
StringBuffer sb1 = new StringBuffer(“abcde”);
sb1.reverse(sb1);
System.out.println(sb1);
}
运行结果:
edcba
String StringBuffer 和 StringBuilder 的区别
1)StringBuffer 和 StringBuilder 的区别
StringBuffer是jdk1.0版本的,是线程安全的,效率低
StringBuilder是jdk1.5版本的,是线程不安全的,效率高
2)String和StringBuffer,StringBuilder的区别
String是一个不可变的字符序列
StringBuffer,StringBuilder是可变的字符序列