StringBuffer的基本使用

StringBuffer的基本使用示例:

package com.igeek02;
/*
 * StringBuffer:底层维护了一个字符数组
 * 线程安全的可变字符序列。一个类似于 String 的字符串缓冲区
 * 可以通过某些方法调用可以改变该序列的长度和内容。
 * StringBuffer 上的主要操作是 append 和 insert 方法,可重载这些方法,以接受任意类型的数据。
 *
 *
 * String:不可变的字符串缓冲区,字符串是常量,一旦定义不能更改
 * StringBuffer 可变的字符串缓冲区  JDK1.0   线程安全的(java使用使用同步机制保证线程安全),效率低
 * StringBuilder  可变的字符串缓冲区 JDK1.5  线程不安全的,效率高
 * 
 * 构造方法:
 * StringBuffer() 
          构造一个其中不带字符的字符串缓冲区,其初始容量为 16 个字符。
   StringBuffer(String str) 
          构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
        
   StringBuffer基本上所有的方法都是操作对象本身
   方法
   StringBuffer	append(int i) 
          将 int 参数的字符串表示形式追加到此序列。
   StringBuffer	append(char[] str, int offset, int len) 
          将 char 数组参数的子数组的字符串表示形式追加到此序列。
   StringBuffer	append(Object obj) 
          追加 Object 参数的字符串表示形式。
   StringBuffer	append(String str) 
          将指定的字符串追加到此字符序列。
   StringBuffer	append(StringBuffer sb) 
          将指定的 StringBuffer 追加到此序列中。
          
    StringBuffer	insert(int offset, boolean b) 
          将 boolean 参数的字符串表示形式插入此序列中。
    StringBuffer	 insert(int offset, Object obj) 
          将 Object 参数的字符串表示形式插入此字符序列中。
    StringBuffer 	insert(int offset, String str) 
          将字符串插入此字符序列中。
          
          
    获取
    int	 capacity()  返回当前容量。
 	char	 charAt(int index) 返回此序列中指定索引处的 char 值。
 	int	length() 返回长度(字符数)。
    int	indexOf(String str) 
          返回第一次出现的指定子字符串在该字符串中的索引。
 	int	indexOf(String str, int fromIndex) 
          从指定的索引处开始,返回第一次出现的指定子字符串在该字符串中的索引。
 	int	lastIndexOf(String str) 
          返回最右边出现的指定子字符串在此字符串中的索引。
 	int	lastIndexOf(String str, int fromIndex) 
          返回最后一次出现的指定子字符串在此字符串中的索引。
 	删除
 	StringBuffer  delete(int start, int end) 
          移除此序列的子字符串中的字符。
 	StringBuffer  	deleteCharAt(int index) 
          移除此序列指定位置的 char。
          
     void	setCharAt(int index, char ch) 
          将给定索引处的字符设置为 ch。
 	void	 setLength(int newLength) 
          设置字符序列的长度。
    
  
  void	trimToSize() 
          尝试减少用于字符序列的存储空间。
   void	ensureCapacity(int minimumCapacity) 
          确保容量至少等于指定的最小值。
          
          
   StringBuffer容量扩展
   添加元素之后,容量不够,需要扩容,(在原有容量(capacity)的基础上乘以2,再加上2)
   原有容量扩展一倍
   
   如果扩展一被之后还不够存储,那么容量直接扩展到等于当前所需的最小容量
 * */
public class Demo1 {

	public static void main(String[] args) {
		/*
		 * 删除
	 	 StringBuffer  delete(int start, int end) 
	          移除此序列的子字符串中的字符。
	 	 StringBuffer  	deleteCharAt(int index) 
	          移除此序列指定位置的 char。
	          
	     void	setCharAt(int index, char ch) 
	          将给定索引处的字符设置为 ch。
	 	 void	 setLength(int newLength) 
	          设置字符序列的长度。
		 * */
		StringBuffer sb = new StringBuffer("igeekhome");
		//sb.delete(1, 3);//[1,3)
		sb.delete(0, 5);
		System.out.println(sb);//home
		sb.deleteCharAt(1);
		System.out.println(sb);
		sb.setCharAt(0, 'k');
		System.out.println(sb);
		/*
		 * 其他  
	   void	getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 
	          将字符从此序列复制到目标字符数组 dst。
	   StringBuffer	replace(int start, int end, String str) 
	          使用给定 String 中的字符替换此序列的子字符串中的字符。
	   StringBuffer	reverse() 
	          将此字符序列用其反转形式取代。
	          
	 String	substring(int start) 
	          返回一个新的 String,它包含此字符序列当前所包含的字符子序列。
	 String	substring(int start, int end) 
	          返回一个新的 String,它包含此序列当前所包含的字符子序列。
	 String	toString() 
	          返回此序列中数据的字符串表示形式。
		 * */
		sb = new StringBuffer("igeekhome");
		sb.replace(0, 5, "China");
		System.out.println(sb);//Chinahome
		sb.reverse();
		System.out.println(sb);
		sb = new StringBuffer("igeekhome");
		String s  = sb.substring(2);
		System.out.println(s);
		System.out.println(sb);//igeekhome   substring截取子串,并返回新的字符串
		s = sb.substring(0, 5);//[0,5)
		System.out.println(s);
		String s1 = sb.toString();//StringBuffer --> String
		System.out.println(s1);
		
	}
	public static void m2() {
		StringBuffer s = new StringBuffer();
		System.out.println("容量:" + s.capacity());//16 :
		System.out.println("长度:" + s.length());//0
		s.append("igeek");
		System.out.println("容量:" + s.capacity());//16 :包含5个字符
		System.out.println("长度:" + s.length());//5	
		s.append("igeekigeek");//15个字符 ,容量16
		s.append("igeekigeekigeekigeek");
		//s.append("igeekigeekigeek");
		System.out.println("容量:" + s.capacity());//
		System.out.println("长度:" + s.length());//20
	}
	public static void m1() {
		StringBuffer s = new StringBuffer();//空字符串
		System.out.println(s);
		s.append(12);
		System.out.println(s);
		s.append(new char[] {'h','a','h','a'}, 0, 2);
		System.out.println(s);
		s.append(new Demo1());//对象toString方法的返回值拼接到StringBuffer对象上
		System.out.println(s);
		s.append("igeek");
		s.append(new StringBuffer("哈哈"));
		System.out.println(s);
		
		System.out.println(s.append(true).append(3.14));
		/*System.out.println("---");
		String s1 = "haha";
		s1.concat("hehe");
		System.out.println(s1);*/
		s = new StringBuffer("igeek");
		s.insert(1, "哈哈");
		System.out.println(s);
		s.insert(0, new Demo1());
		System.out.println(s);
	}
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return "0";
	}

}

 

你可能感兴趣的:(java)