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";
	}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_无往而不胜_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值