StringBuffer和StringBuilder


package StringBuffer;
/*
 * StringBuffer是字符串缓冲区。
 * 
 * 是一个容器。
 * 特定:
 * 1、长度是可变化的。
 * 2、可以字节操作多个数据类型。
 * 3、最终会通过toString方法变成字符串。
 * 
 * 全称
 * C create创建     U update更新  R read读取    D delete删除
 * 
 * 1、存储。
 * 		StringBuffer append();将指定数据作为参数添加到已有数据结尾处。
 * 		StringBuffer insert(index,数据);可以将数据插入到指定index位置。
 * 		例如       StringBuilder bul = new StringBuilder("adflkwefnkl");

                    bul.insert(1,"qq");//结果为:"aqqdflkwefnkl"
 * 
 * 2、删除。
 * 		StringBuffer delete(start,end);删除缓冲区中的数据,包含start,不包含end.
 * 		StringBuffer deleteCharAt(index);删除指定位置的字符。
 * 		例如       StringBuilder bul = new StringBuilder("adflkwefnkl");

                    bul.delete(1,3);//结果为:"alkwefnkl"

                    bul.delete(0,bul.length());//清空缓存区,bul为""

                    bul.deleteCharAt(2);//结果为:"adlkwefnkl"	
 * 	
 * 
 * 3、获取。
 * 		char charAt(int index);	获取指定位置index的字符串
 * 		int indexOf(String str); 获取指定字符串位置	
 * 		int lastIndexOf(String str);反向获取指定字符串位置	
 * 		int length();				获取字符串长度
 * 		String substring(int start,int end);	在StringBuilder中比较特殊,返回的String类型。
 * 		 例如       StringBuilder bul = new StringBuilder("adflkwefnkl");

                   bul.charAt(1);//结果为:"d"

                   bul.indexOf("a");//结果为:0

                   bul.lastIndexOf("n");//结果为:8

                   bul.length();//结果为:10       

                   bul.substring(1,3)//结果为:"df"		
 * 	
 * 	
 * 4、修改。
 * 		StringBuffer replace(start,end,string); 将start到end(包含头不包含尾)位置上的字符串更改为指定字符串String
 * 		void setCharAt(int index,char ch);	替换指定位置上字符为指定字符。
 * 		例如    	 StringBuilder bul = new StringBuilder("adflkwefnkl");
 * 			 bul.replace(1,3,"JAVA"); //结果为:"aJAVAlkwefnkl"	
 * 			 bul.replace(2,'M');	//结果为:"adMlkwefnkl";
 * 
 * 5、反转。
 * 		StringBuffer reverse(); 替换指定位置上字符为指定字符
 * 		例如	 StringBuilder bul = new StringBuilder("ABCD");
 * 			 bul.reverse(); //结果为"DCBA";
 * 
 * 6	将缓冲区中指定数据存储到指定字符串数组中。
 * 		void getChars(int srcBegin,int srcEnd,char[] dst, int dstBegin)
 * 
 * 
 * JDK1.5版本之后出现了StringBuilder。
 * 
 * StringBuffer是线程同步。
 * StringBuilder是线程不同步。
 * 
 * 以后开发,建议使用StringBuilder
 * 
 * 升级三个因素:
 * 1、提高效率。
 * 2、简化书写。
 * 3、提高安全性。
 */
public class StringBufferDemo {

	public static void main(String[] args) {
		//method_upadte();
		
		StringBuilder sb = new StringBuilder("abcdef");
		
		char[] chs = new char[6]; 
		
		sb.getChars(1, 4, chs, 1);
		//getChars将字符从此字符串复制到目标字符数组。 
		
		for(int x=0; x<chs.length;x++)
		{
			sop("chs["+x+"]="+chs[x]+";");
		}
		
		draw(3,6);
		draw(8,9);
	//	StringBuilder sb1 = new StringBuilder();
	//	sb1.append(new Demo()).append(new Demo());
	//	sop("sb1="+sb1);
		method_update();
		
		method_add();
	}
	public static void method_update()
	{
		StringBuffer sb = new StringBuffer("abcde");
		
		System.out.println(sb+"  update");
		sb.replace(1, 4, "java");
		//字符替换
		
		sb.setCharAt(2,'k');
		//将给定索引处的字符设置为 ch。
		
		sop(sb.toString());
		//返回此序列中数据的字符串表示形式。
	}
	public static void method_del()
	{
		StringBuffer sb = new StringBuffer("abcde");
		
		sb.delete(1, 3);
		//清空缓冲区
		//sb.delete(0,sb.length());
		
		//sb.delete(2,3);
		sb.deleteCharAt(2);
		//移除此序列指定位置上的 char。此序列将缩短一个 char。 
		
		sop(sb.toString());
	}
	public static void method_add()
	{
		StringBuffer sb = new StringBuffer();
		
	//	sb.append("abc").append(true).append(34);
		StringBuffer sb1 = sb.append(34);
		sop("sb==sb1:"+(sb==sb1));
		
		sb.insert(1,"qq");
		sop(sb.toString());//abctrue34;
	//	sop(sb1.toString());
	}
	public static void draw(int row,int col)
	{
		StringBuilder sb = new StringBuilder();
		for(int x=0;x<row;x++)
		{
			for(int y=0;y<col;y++)
			{
				sb.append("*");
			}
			sb.append("\r\n");
		}
		sop(sb.toString());
	}
	public static void sop(String str)
	{
		System.out.println(str);
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值