JavaSe基础XX16——API对象-StringBuffer类

*09-常用对象API(StringBuffer类-特点&添加功能)











*10-常用对象API(StringBuffer类-插入&删除&查找&修改)


操作容器进行删除。


* 2,删除:
* StringBuffer delete(start,end):包含头,不包含尾。
* StringBuffer deleteCharAt(int index):删除指定位置的元素 




清空缓冲区:

//清空缓冲区。
// sb.delete(0,sb.length());
// sb = new StringBuffer();



 * 3,查找:
* char charAt(index);
* int indexOf(string);
* int lastIndexOf(string);


* 4,修改:
* StringBuffer replace(start,end,string);
* void setCharAt(index,char);






----------------------------小结------------------------------

package cn.itcast.p2.stringbuffer.demo;

public class StringBufferDemo {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		/*
		 * StringBuffer:就是字符串缓冲区。
		 * 用于存储数据的容器。
		 * 特点:
		 * 1,长度的可变的。 
		 * 2,可以存储不同类型数据。
		 * 3,最终要转成字符串进行使用。
		 * 4,可以对字符串进行修改。
		 * 
		 * 
		 * 既然是一个容器对象。应该具备什么功能呢?
		 * 1,添加:
		 * 		StringBuffer append(data);//short、byte不能添加。
		 * 		StringBuffer insert(index,data);
		 * 2,删除:
		 * 		StringBuffer delete(start,end):包含头,不包含尾。
		 * 		StringBuffer deleteCharAt(int index):删除指定位置的元素 
		 * 3,查找:
		 * 		char charAt(index);
		 * 		int indexOf(string);
		 * 		int lastIndexOf(string);
		 * 4,修改:
		 * 		StringBuffer replace(start,end,string);
		 * 		void setCharAt(index,char);
		 * 
		 * 增删改查  C(create)U(update)R(read)D(delete) 
		 * 
		 * 
		 * 
		 */
		bufferMethodDemo_2();
	}
	
	private static void bufferMethodDemo_2() {
		StringBuffer sb = new StringBuffer("abce");
		
//		sb.delete(1, 3);//ae
		
		//清空缓冲区。
//		sb.delete(0,sb.length());
//		sb = new StringBuffer();
		
//		sb.replace(1, 3, "nba");
//		sb.setCharAt(2, 'q');
		
//		sb.setLength(10);
		
//		System.out.println("sb:"+sb);
//		System.out.println("len:"+sb.length());
		
		System.out.println(sb.reverse());
		
		
	}

	private static void bufferMethodDemo_1() {
		StringBuffer sb = new StringBuffer("abce");
		
//		sb.append("xixi");
		sb.insert(2, "qq");
		
		System.out.println(sb.toString());
	}

	public static void bufferMethodDemo(){
		//创建缓冲区对象。
		StringBuffer sb = new StringBuffer();
		
		sb.append(4).append(false);//.append("haha");
		sb.insert(1, "haha");
//		sb.append(true);
		
		System.out.println(sb);
		
	}
	
	

}






反转:



*11-常用对象API(StringBuffer类-可变长度数组)

小插曲:




可变长度数组的原理:

区别是效率。





*12-常用对象API(StringBuilder类)




StringBuffer 1.0之后就有。StringBuilder 是1.5之后出来的。


区别是:

StringBuffer线程安全。StringBuilder线程不安全。


StringBuffer是怎么同步的?


class StringBuffer jdk1.0
{
	object lock;
	public   StirngBuffer append(int x)
	{
		synchronized(lock)
		{
		}
	}
	
	
	public synchronized StringBuffer delete(int start,int end)
	{
		synchronized(lock)
		{
		}
	}
}

慢。调用一次方法都会判断锁一次。只是考虑了安全。

因此在单线程的情况下,可以用StringBuilder。


	<span style="white-space:pre">	</span>/*
		 * jdk1.5以后出现了功能和StringBuffer一模一样的对象。就是StringBuilder
		 * 
		 * 不同的是:
		 * StringBuffer是线程同步的。通常用于多线程。
		 * StringBuilder是线程不同步的。通常用于单线程。 它的出现提高效率。
		 * 
		 * jdk升级:
		 * 1,简化书写。
		 * 2,提高效率。
		 * 3,增加安全性。
		 */
		


*13-常用对象API(StringBuilder类-练习)


StringBuffer 和StringBulider什么时候用呢?


	/**
	 * 将一个int数组变成字符串。
	 */
	public static String arrayToString(int[] arr){
		
		String str = "[";
		for (int i = 0; i < arr.length; i++) {
			if(i!=arr.length-1)
				str+=arr[i]+", ";
			else
				str+=arr[i]+"]";
		}
		
		return str;
	}


	public static String arrayToString_2(int[] arr){
		
		StringBuilder sb = new StringBuilder();
		sb.append("[");
		for (int i = 0; i < arr.length; i++) {
			if(i!=arr.length-1)
				sb.append(arr[i]+", ");
			else
				sb.append(arr[i]+"]");
		}
		return sb.toString();
	}













评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值