StringBuffer的使用

一.StringBuffer与String的区别
1.StringBuffer是使用缓冲区的,本身也是操作字符串的,但是与String类不同,String类的内容一旦声明之后则不可改变,改变的只是内存地址的指向,而StringBuffer中的内容是可以改变的,这是StringBuffer与String的最大不同
2.StringBuffer本身是一个操作类,所以不能用直接赋值的方式实例化,只能通过构造方法完成
3.连接字符串,String类通过“+”完成,StringBuffer通过append()方法实现
二.StringBuffer的常用方法
1.字符串连接操作
public StringBuffer append(String str)//注意append()方法返回StringBuffer类型
public class StringBufferDemo01{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello");
		buf.append("world").append("!!!");
		buf.append("\n").append('\n').append(1).append('n');//注意单引号只能引用一个字符
		System.out.println(buf);
	}
}
继续验证StringBuffer中的内容可以改变,利用引用传递来验证
public class StringBufferDemo02{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		fun(buf);
		System.out.println(buf);
	}
	public static void fun(StringBuffer s){
		s.append("Jack").append(" love ").append("Rose");
	}
}


2.任意位置添加内容
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);
	}
}


public class StringBufferDemo04{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("World");
		buf.insert(buf.length(),"Hello");	//在第一个内容之前添加内容
		System.out.println(buf);
	}
}
StringBuffer和String一样,都可以通过length()方法求出长度
3.字符串的反转操作
public StringBuffer reverse()
public class StringBufferDemo05{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World");
		String str = buf.reverse().toString();	//将内容反转后变为String类型
		System.out.println(str);
	}
}

4.替换操作,替换指定范围的内容
public StringBuffer replace(int start,int end,String str)
public class StringBufferDemo06{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World");
		buf.replace(6,11,"Jack");
		System.out.println(buf);
	}
}


5.字符串截取
public String substring(int start,int end)//    注意返回String类型
public class StringBufferDemo07{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World");
		String str = buf.substring(6,11);
		System.out.println(str);
	}
}

6.删除指定范围内容
public StringBuffer delete(int start,int end)
public class StringBufferDemo08{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World");
		buf.delete(6,11);
		System.out.println(buf);
	}
}

7.查找内容是否存在
在String类中可以用indexof()方法进行查找,在StringBuffer中也用此方法
如果找到了返回位置,没找到返回-1
public int indexOf(String str,int fromIndex)
public class StringBufferDemo08{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Hello World");
		if(buf.indexOf("Hello") != -1){
			System.out.println("找到了");
		}else{
			System.out.println("未找到");
		}
	}
}

三.StringBuffer的实际应用
如下代码不断改变String对象的引用,性能很低
public class StringBufferDemo10{
	public static void main(String[] args){
		String str = "Jack";
		for(int i=0;i<100;i++){
			str += i;	//不断修改string的内存引用
		}
		System.out.println(str);
	}
}


此时就需要用StringBuffer来实现
public class StringBufferDemo10{
	public static void main(String[] args){
		StringBuffer buf = new StringBuffer();
		buf.append("Jack");
		for(int i=0;i<100;i++){
			buf.append(i);	//利用StringBuffer优化程序
		}
		System.out.println(buf);
	}
}
记住:凡是需要频繁修改字符串内容的时候,都要使用StringBuffer类完成
参考资料:
李兴华老师java基础
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值