StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是其内存地址的指向,而StringBuffer中的内容是可以改变的。
对于StringBuffer而言,本身是一个具体的操作类,所以不能像String那样采用直接赋值的方式进行对象的实例化,必须通过构造方法完成。
当一个字符串的内容需要被经常改变时就要使用StringBuffer。
在StringBuffer中使用append()方法,完成字符串的连接操作。
public class StringBufferDemo01 {
public static void main (String args []) {
StringBuffer buf = new StringBuffer(); //声明StringBuffer对象
buf.append("Hello "); //向StringBuffer中添加内容
buf. append("World"). append (" !!!") ; //可以连续调用append()方法。
buf.append("\n"); //添加一个转义字符
buf.append("数字 = ").append(1).append("\n"); //添加数字
buf.append("字符 = ").append("C").append("\n"); //添加字符
buf.append("布尔 = ").append(true); //添加布尔值
System.out.println(buf);
}
//继续验证StringBuffer的内容是可以修改的。通过引用传递的方式完成。
public class StringBufferDemo02 {
public static void main(String args[]){
StringBuffer buf = new StringBuffer(); //声明StringBuffer对象
buf.append("Hello "); //向StringBuffer中添加内容
System.out.println(buf);
fun(buf);
System.out.println(buf);
}
public static void fun(StringBuffer s){ //接收StringBuffer引用
s.append("MLDN").append("abc"); //修改StringBuffer的内容
}
}
可以直接使用insert()方法在任意位置添加内容:public StringBuffer insert(int offset,boolean b)
public class StringBufferDemo03{
public static void main(String args[]){
StringBuffer buf = new StringBuffer();
buf.append("world");
buf.insert(0, "Hello "); //在第一个内容之前添加内容
System.out.println(buf);
buf.insert(buf.length()," abc"); //在最后添加内容
System.out.println(buf);
}
}
//在StringBuffer中与String类非常类似的都可以使用length()方法求出字符串的长度
直接使用reverse()方法就可以完成反转功能:public StringBuffer reverse()
public class StringBufferDemo04 {
public static void main(String args[]){
StringBuffer buf = new StringBuffer(); //声明StringBuffer对象
buf.append("World").append(" !!!"); //可以连续调用append()方法。
buf.insert(0, "Hello ");
String str = buf.reverse().toString(); //将内容反转后变为String类型
System.out.println(str); //输出结果:!!! dlroW olleH
System.out.println(buf); //输出结果:!!! dlroW olleH
}
}
在StringBuffer类中也存在replace()方法,使用此方法就可以对指定范围的内容进行替换:
Public StringBuffer replace(int start, int end, String str)
public class StringBufferDemo04 {
public static void main(String args[]){
StringBuffer buf = new StringBuffer(); //声明StringBuffer对象
buf.append("World").append(" !!!"); //可以连续调用append()方法。
buf.insert(0, "Hello ");
buf.replace(6, 11, "abc"); //将world内容替换
System.out.println(buf); //输出结果:!!! dlroW olleH
}
}
通过substring()方法直接从Stringbuffer中指定范围截取内容
public String substring(int start, int end)
public class StringBufferDemo06 {
public static void main(String args[]){
StringBuffer buf = new StringBuffer(); //声明StringBuffer对象
buf.append("World").append(" !!!"); //可以连续调用append()方法。
buf.insert(0, "Hello ");
String str = buf.substring(6,11); //截取指定范围的内容
System.out.println(str);
System.out.println(buf.substring(6, 11));
}
}
因为StringBuffer的内容是可以修改的,所以也可以通过delete()方法删除指定范围的内容。
在String类中可以使用indexOf()方法进行查找,而在StringBuffer中也可以继续使用此方法,此方法如果找到了内容则返回位置,否则返回-1。
public class StringBufferDemo06 {
public static void main(String args[]){
StringBuffer buf = new StringBuffer(); //声明StringBuffer对象
buf.append("World").append(" !!!"); //可以连续调用append()方法。
buf.insert(0, "Hello ");
String str = buf.substring(6,11).toString(); //截取指定范围的内容
System.out.println(str);
System.out.println(buf.substring(6, 11));
buf.delete(6, 11); //删除指定字符串
System.out.println(buf);
if(buf.indexOf("Hello") == -1){ //查找指定内容
System.out.println("没有查找到指定内容");
}else{
System.out.println("指定内容存在");
}
}
以上的常用方法,实际上对于String类中也是存在的,所以使用的时候直接根据DOC文档查看即可。
public class StringBufferDemo07 {
public static void main(String args[]){
String str = "abc";
for(int i = 0 ; i < 100 ; i++){
str += i; //不断修改String的内存引用,性能低
}
System.out.println(str);
//以上的操作代码要频繁修改字符串中的内容,使用String根本不合理,最好的方法是使用StringBuffer。
StringBuffer buf = new StringBuffer();
buf.append("abc");
for(int i = 0 ; i < 100 ; i++){
buf.append(i); //StringBuffer可以修改,性能高
}
System.out.println(buf);
}
}
凡是需要频繁修改字符串内容的时候,都要使用StringBuffer类完成,而且在StringBuffer类中也提供了一些方法是String类中所没有的,包括:delete()、insert()等,这些方法需要的时候直接通过DOC文档进行查找。
1237

被折叠的 条评论
为什么被折叠?



