StringBuffer类常用方法:
方法声明 | 功能描述 |
---|---|
StringBuffer append(char c) | 添加字符到 StringBuffer对象中末尾 |
StringBuffer insert(int offset,String str) | 在 StringBuffer对象中的offest位置插入字符串str |
StringBuffer deleteCharAt(int index) | 移除 StringBuffer对象中指定位置的字符 |
StringBuffer delete(int start,int end) | 删除 StringBuffer对象中指定范围的字符或字符串 |
StringBuffer replace(int start,int end,String s) | 将 StringBuffer对象中指定范围的字符或字符串用新的字符串s进行替换 |
viod setCharAt(int index,char ch) | 修改指定位置index处的字符串对象 |
String toString() | 返回 StringBuffer缓冲区中的字符串对象 |
StringBuffer reverse() | 将此 StringBuffer对象用其反转形势取代 |
案例:
package ser;
public class Ch01 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("1.添加----------------");
add();
System.out.println("2.修改----------------");
update();
System.out.println("3.删除----------------");
delete();
}
//删除
private static void delete() {
StringBuffer sb = new StringBuffer("ABCDEFG");
sb.delete(3, 7); //指定范围删除
System.out.println("删除指定位置结果:"+sb);
sb.deleteCharAt(2); //指定位置删除
System.out.println("删除指定位置结果:"+sb);
sb.delete(0, sb.length()); //清除缓冲区
System.out.println("清除缓冲区结果:"+sb);
}
//修改
private static void update() {
StringBuffer sb = new StringBuffer("ABAAA");
sb.setCharAt(2, 'C'); //修改指定位置字符
System.out.println("修改指定位置字符结果:"+sb);
sb.replace(3, 5, "DE"); //替换指定位置字符串或字符
System.out.println("替换指定位置字符(串)结果是:"+sb);
System.out.println("字符串反转结果是:"+sb.reverse());
}
//添加
private static void add() {
StringBuffer sb = new StringBuffer();//定义一个字符串缓冲区
sb.append("ABC"); //添加字符串
System.out.println("append添加结果:"+sb);
sb.insert(3, "DE");//在指定位置插入字符串
System.out.println("insert添加结果:"+sb);
}
}
运行结果:
其中append()和insert()方法是最常用的,并且这两个方法有很多重载形式,不同的是,append()方法始终将这些字符添加到缓冲区的末尾,而insert()方法则可以在指定的位置添加字符。另外,StringBuffer对象的delete()方法用于删除指定位置的字符,包含其实索引,不包含结束索引,setCharAt()和replace()方法用以替换指定位置的字符。
**
StringBuffer类和String类有很多相似之处,初学者在使用时很容易混淆,接下来针对这两个类进行对比,简单归纳一下两者的不同,具体如下:
**
1.String类定义的字符串是常亮,一旦创建后,内容和长度都是无法改变的。StringBuffer表示字符容器,其内容和长度可以随时修改,在操作字符串时,如果该字符仅用于表示数据类型,则使用String类即可,但是如果需要对字符串中的字符进行增删改查,则使用StringBuffer类。
2.String类重写了Object类的equals()方法,而StringBuffer类没有重写Object类的equals()方法。具体示例如下:
String s1 = new String("abc");
String s2 = new String("abc");
System.out.println(s1.equals(s2)); //打印结果为true
StringBuffer a1 = new StringBuffer("abc");
StringBuffer a2 = new StringBuffer("abc");
System.out.println(a1.equals(a2)); // 打印结果为false
3.String类对象可以用操作符+进行连接,而StringBuffer 对象之间不能,具体事例如下:
扩展(StringBuilder):
StringBuilder 类同样也可以操作字符串,且功能与StringBuffer相似,两个类所提供的方法也进本相同。二者不同的是:StringBuffer是线程安全,而StringBuilder没有实现线程安全功能,所以性能略高。通常情况下,如果创建一个内容可变的字符串对象,应该优先考虑StringBuilder类。