java学习之字符串缓冲区

一、StringBuffer(可变字符序列) 字符串缓冲区

描述:
StringBuffer的特点:
							1.长度是可变的
							2.可以存储不同的数据类型(包括基本数据类型和引用数据类型)
							3,最终需要转成字符串使用
							4.可以对字符串进行修改
	
		其实就是一个容器(用来装东西的)
		例如:数组:int[] arr = new int[]
				1.长度是固定的 
				2.只能存储同一种数据类型的元素

二、StringBuffer的构造函数
StringBuffer():创建一个字符串缓冲区对象,默认容量为16
例如:
StringBuffer ab = new StringBuffer()

			StringBiffer(int rl):创建一个字符串缓冲区对象指定容量为rl

例如:
StringBuffer ab = new StringBuffer(19)

StringBuffer(String str): 创建一个字符串缓冲区对象 容器中有默认的数据Str,容量为16+Str

三、StringBuffer()的的方法
( 1 )添加
1…append(data) 可以添加任意的数据类型
2…insert(1,“需要添加的字符串”)在指定位置上添加元素,
( 2 )删除
// 在指定位置上删除元素,delete()方法删除时包左不包右
sb.delete(2,5);
//清空缓冲区的数据
sb.delete(0,sb.length());
//删除指定索引处的元素
sb.deleteCharAt(2);
//清空缓冲区的数据
sb.delete(0,sb.length());
( 3 )查找
charAt(index) // 获取指定元素内容
//获取3的字符内容
char ch = sb.charAt(3);
//获取c的位置 如果返回一个负数说明不存在这个字符
// int index = sb.indexOf(“c”);
//两个元素放在一起,该方法会默认成一个字符串,进行查找
// int index = sb.indexOf(“cd”);
//逆向查找该元素位置
//int index = sb.lastIndexOf(“b”);
( 4 )修改功能

						 //将指定区间中的数据替换成新的数据
								 replace(start,end,"替换内容")
						//将2号位置上的元素替换成9    setcharAt(int index,char newchar)替换指定索引的元素
								sb.setcharAt(2,"9");
		( 5 )反转功能
						//sb.setLength(5)将长度设置为5,其余自动舍弃
								sb.reverse();//实现反转功能

四、StringBuffer的扩容规律:2n+2
如果一次性添加的字符数据很多,容器会自动的判断扩容后能否装下,如果能装下
那就扩为 2
n+2

//添加功能
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象    容器中没有内容    默认容量为16
		StringBuffer sb = new StringBuffer();
	//	向容器中添加数据
	StringBffer new_sb = sb.append(true);
		system.out.println("new_sb ="+new_sb);
	}
}
//插入功能
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象    容器中  默认数据abcde此时容量为16+abcde
		StringBuffer sb = new StringBuffer("abcde");
	//	在指定位置上添加元素,在1号位置上添加元素A,此时所有元素依次往后排序
		sb.insert(1,"A");
		system.out.println("sb ="+sb);
	}
}
//删除功能
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象    容器中  默认数据abcde此时容量为16+abcde
		StringBuffer sb = new StringBuffer("abcdefghk");
	//	在指定位置上删除元素,delete()方法删除时包左不包右
	//	sb.delete(2,5);
	//清空缓冲区的数据
		sb.delete(0,sb.length());
		system.out.println("sb ="+sb);
	}
}
//删除单个字符串内容
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象    容器中  默认数据abcde此时容量为16+abcde
		StringBuffer sb = new StringBuffer("abcdefghk");
	//删除指定索引处的元素
	//	sb.deleteCharAt(2);
	//清空缓冲区的数据
		sb.delete(0,sb.length());
		system.out.println("sb ="+sb);
	}
}

//查找功能
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象    容器中  默认数据abcde此时容量为16+abcde
										  //012345678
		StringBuffer sb = new StringBuffer("abcdefghk");
	//获取3的字符内容
		char ch = sb.charAt(3);
		system.out.println("ch = " + ch);
	}
}
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象    容器中  默认数据abcde此时容量为16+abcde
										  //012345678
		StringBuffer sb = new StringBuffer("abcdefghk");
	//获取c的位置     如果返回一个负数说明不存在这个字符
	//	int index = sb.indexOf("c");
	//两个元素放在一起,该方法会默认成一个字符串,进行查找
	//	int index = sb.indexOf("cd"); 
	//逆向查找该元素位置
		int index = sb.lastIndexOf("b");
		system.out.println("index = " + index);
	}
}
//StringBuffer的无参构造的扩容
public class Student{
	public static void main(String[] args){
		StringBuffer sb = new StringBuffer("abcdefghk");
	//获取字符串实时占的容量数据
		for(int a = 0; a < 100; a++){
			sb.append("abc);
			system.out.println("容量:"+sb.capacity()+"........."+a+"......."+sb.length());
		}
	}
}
//将指定区间内容替换成新的数据
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象 
										  //012345678
		StringBuffer sb = new StringBuffer("abcdefghk");
	//修改abc的大写ABC      replace(start,end,"替换内容")
		sb.replace(2,5,"ABC");
		system.out.println("ch = " + ch);
	}
}
//将指定区间内容替换成新的数据
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象 
										  //012345678
		StringBuffer sb = new StringBuffer("abcdefghk");
	//将2号位置上的元素替换成9    setcharAt(int index,char newchar)替换指定索引的元素
		sb.setcharAt(2,"9");
		system.out.println("ch = " + ch);
	}
}
//
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象 
										  //012345678
		StringBuffer sb = new StringBuffer("abcdefghk");
	//sb.setLength(5)将长度设置为5,其余自动舍弃
		sb.setLength(5);//设定长度过长时,自动用空格补上
		system.out.println("ch = " + ch);
	}
}

//反转功能

public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象 
										  //012345678
		StringBuffer sb = new StringBuffer("abcdefghk");
	//sb.setLength(5)将长度设置为5,其余自动舍弃
		sb.reverse();//设定长度过长时,自动用空格补上
		system.out.println("sb = " + sb);
	}
}
//定义一个字符串实现反转功能
public class Student{
	public static void main(String[] args){
		//创建字符串缓冲对象 
		String s = "abcdefg";
										  //012345678
		StringBuffer sb = new StringBuffer(s);
	//sb.setLength(5)将长度设置为5,其余自动舍弃
		sb.reverse();//设定长度过长时,自动用空格补上
		system.out.println("sb = " + sb);
	}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值