一、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
如果一次性添加的字符数据很多,容器会自动的判断扩容后能否装下,如果能装下
那就扩为 2n+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);
}
}