Java笔记之StringBuffer

StringBuffer

 StringBuffer:就是字符串缓冲区。
用于存储数据的容器。
特点:
 1,长度的可变的。 
 2,可以存储不同类型数据。
 3,最终要转成字符串进行使用。
 4,可以对字符串进行修改。

既然是一个容器对象。应该具备什么功能呢?
1,添加:
         *         StringBuffer append(data);
         *         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) 

sb.setLength(10);

//设置长度,设置为0和清空缓冲区效果一样

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);
		 * 		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); //设置长度,设置为0和清空缓冲区效果一样
		
//		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"); 此行输出4false
		sb.insert(1, "haha");
//		sb.append(true);
		
		System.out.println(sb);
		
	}
	
	

}

StringBuilder

一个可变的字符序列。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现中,它比 StringBuffer 要快。

1.5版本开始就有StringBuilder

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

package cn.itcast.p2.stringbuffer.demo;

public class StringBuilderDemo {

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

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

}
/*

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


*/

存完数据,如果以字符串的方式使用就是StringBuffer或者StringBuilder

小练习:

package cn.itcast.p2.stringbuffer.test;

public class StringBuilderTest {

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

		int[] arr = {3,1,5,3,8};
		String s = arrayToString_2(arr);
		
		System.out.println(s);
	}
	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();
	}
	
	/**
	 * 将一个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;
	}

}

 

posted @ 2019-02-02 01:15  yorkmass  阅读(161)  评论(0)    收藏  举报