Stringbuffer(容器)使用场景
1,拼串
2,StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
//拼串的时候,我们经常使用+
String str = "aaa" + "bbb" + "cccc" + "ddd";
// StringBuffer 可以解决拼串的问题
// String 类 这个字符串一旦定义好,他的内容和长度就不可改变了
// StringBuffer 相当于一个字符容器,他的长度和内容是可变的。
3,获取容量capacity()
StringBuffer sb = new StringBuffer();
int capacity = sb.capacity();
System.out.println(capacity);
4, StringBuffer( int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。
StringBuffer sb2 = new StringBuffer(1000);
int capacity1 = sb2.capacity();
System.out.println(capacity1);
5,构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
StringBuffer sb3 = new StringBuffer("abdeasdfasdfasdfasdfassfdasdfasfasfas");
int capacity2 = sb3.capacity();
int length = sb3.length();
System.out.println(capacity2); //获取容量
System.out.println(length);//获取长度
// OutOfMemoryError 堆内存溢出
long[] ints = new long[900000000];
System.out.println(ints);
6,往容器中追加内容
StringBuffer sb = new StringBuffer();
//public StringBuffer append (String str):
sb.append(100).append(3.14).append("abc");
String s = sb.toString();//StringBuffer 重新了toString() 把容器中的数据拼接成字符串返回
System.out.println(s);
7,在指定索引的前面插入内容,返回的还是容器本身
StringBuffer sb = new StringBuffer();
sb.append(200).append(true).append("abc");
StringBuffer sb2 = sb.insert(2, "hehe");//在指定索引的前面插入内容,返回的还是容器本身
System.out.println(sb);
System.out.println(sb==sb2);
8,删除缓冲区的数据`
//删除缓冲区的数据
StringBuffer sb = new StringBuffer();
sb.append("abc").append("我爱你");
//删除我
sb.deleteCharAt(3); //根据索引删除容器中的某个字符,返回的还是原来的容器
sb.delete(3,sb.length()); //根据起始索引和终止索引,删除容器中的一段内容 ,返回的还是原来的容器
System.out.println(sb.toString());
9,根据起始索引和 终止索引,替换一段你指定的新内容,返回的还是你原来的容器
StringBuffer sb = new StringBuffer();
sb.append("aaa").append("bbb").append("cccc");
//根据起始索引和 终止索引,替换一段你指定的新内容,返回的还是你原来的容器
StringBuffer sb2= sb.replace(0, 3, "AAA");
System.out.println(sb);
System.out.println(sb2);
10,反转容器中的内容
StringBuffer reverse = sb.reverse(); //返回的还是你原来的容器
System.out.println(sb);
System.out.println(sb2);
System.out.println(reverse);
11,根据指定的起始索引和结束索引,截取容器中的一段数据,以String类型返回
String substring = revese.substring(0,7)
System.out.println(substring);
StringBuffer和String的相互转换
//方式1:通过toString()
StringBuffer sb = new StringBuffer();
sb.append(100);
String s = sb.toString();
//方式2 substring(0);
String s1= sb.substring(0);
//方式3: 构造
String s2 = new String(sb);
String转换StringBuffer
//方式1 通过构造
String str="abc";
StringBuffer sb2 = new StringBuffer(str);
//方式2 添加
StringBuffer append = new
StringBuffer().append(str);
13,检索该字符串在容器中第一次出现的索引 indexOf
StringBuffer sb= new StringBuffer();
sb.append("像我这样优秀的人,本该灿烂过一生");
int index = sb.indexOf("人");
System.out.println(index);
14,案例演示
public class MyTest {
public static void main(String[] args) {
/* A:
案例演示
需求:把数组中的数据按照指定个格式拼接成一个字符串
举例:
int[] arr = {1, 2, 3};
输出结果:
"[1, 2, 3]"
用StringBuffer的功能实现*/
int[] arr = {1,2,3};
StringBuffer sb = new StringBuffer("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length-1){
sb.append(arr[i]).append("]");
}else{
sb.append(arr[i]).append(",");
}
}
System.out.println(sb);
}
}```
15,案例演示2
```java
public class MyTest2 {
public static void main(String[] args) {
/* A:
案例演示
需求:把字符串反转
举例:键盘录入 "abc"
输出结果:"cba"*/
Scanner scanner = new Scanner(System.in);
System.out.println("请随便输入一段字符串");
String s = scanner.nextLine();
StringBuffer s1 = new StringBuffer(s).reverse();
System.out.println(s1);
}
}