我们知道除了string能够对字符串修改外,但如果面对多次修改的需求,就会显得乏力。这时使用stringbuffer就可以解决这类困扰,因为长度的可变性,使得在用法上趋于灵活。下面我们就stringbuffer得概念、特点、与其他string类的区别带来讲解,然后分享一个stringbuffer使用的实例。
1.概念
StringBuffer又称为可变字符序列,它是一个类似于 String 的字符串缓冲区,通过某些方法调用可以改变该序列的长度和内容。原来StringBuffer是个字符串的缓冲区,即就是它是一个容器,容器中可以装很多字符串。并且能够对其中的字符串进行各种操作。
2.特点
长度可变的。
可以存储不同类型数据。
最终要转成字符串进行使用。
可以对字符串进行修改。
3.String、StringBuilder、StringBuffer的区别
从可变性来讲String的是不可变的,StringBuilder,StringBuffer的长度是可变的。
从运行速度上来讲StringBuilder > StringBuffer > String。
从线程安全上来StringBuilder是线程不安全的,而StringBuffer是线程安全的。
4.实例
public class UsingStringBuffer {
public static void testFindStr() {
StringBuffer sb = new StringBuffer();
sb.append("This is a StringBuffer");
// 返回子字符串在字符串中最先出现的位置,如果不存在,返回负数
System.out.println("sb.indexOf("is")=" + sb.indexOf("is"));
// 给indexOf方法设置参数,指定匹配的起始位置
System.out.println("sb.indexOf("is")=" + sb.indexOf("is", 3));
// 返回子字符串在字符串中最后出现的位置,如果不存在,返回负数
System.out.println("sb.lastIndexOf("is") = " + sb.lastIndexOf("is"));
// 给lastIndexOf方法设置参数,指定匹配的结束位置
System.out.println("sb.lastIndexOf("is", 1) = "
+ sb.lastIndexOf("is", 1));
}
public static void testSubStr() {
StringBuffer sb = new StringBuffer();
sb.append("This is a StringBuffer");
// 默认的终止位置为字符串的末尾
System.out.print("sb.substring(4)=" + sb.substring(4));
// substring方法截取字符串,可以指定截取的起始位置和终止位置
System.out.print("sb.substring(4,9)=" + sb.substring(4, 9));
}
public static void testCharAtStr() {
StringBuffer sb = new StringBuffer("This is a StringBuffer");
System.out.println(sb.charAt(sb.length() - 1));
}
public static void testAppend() {
StringBuffer sb = new StringBuffer("This is a StringBuffer!");
sb.append(1.23f);
System.out.println(sb.toString());
}
public static void testDelete() {
StringBuffer sb = new StringBuffer("This is a StringBuffer!");
sb.delete(0, 5);
sb.deleteCharAt(sb.length() - 1);
System.out.println(sb.toString());
}
public static void testInsert() {
StringBuffer sb = new StringBuffer("This is a StringBuffer!");
// 能够在指定位置插入字符、字符数组、字符串以及各种数字和布尔值
sb.insert(2, 'W');
sb.insert(3, new char[] { 'A', 'B', 'C' });
sb.insert(8, "abc");
sb.insert(2, 3);
sb.insert(3, 2.3f);
sb.insert(6, 3.75d);
sb.insert(5, 9843L);
sb.insert(2, true);
System.out.println("testInsert: " + sb.toString());
}
public static void testReplace() {
StringBuffer sb = new StringBuffer("This is a StringBuffer!");
// 将字符串中某段字符替换成另一个字符串
sb.replace(10, sb.length(), "Integer");
System.out.println("testReplace: " + sb.toString());
}
public static void reverseStr() {
StringBuffer sb = new StringBuffer("This is a StringBuffer!");
System.out.println(sb.reverse()); // reverse方法将字符串倒序
}
}以上就是stringbuffer在java中的使用,相信经过本篇的学习,大家已经对stringbuffer有所了解,同时分清与其他string类的不同之处,在多次修改字符串时就可以使用这种方法了。



