StringBuffer 可以解决拼串的问题
String 类 这个字符串一旦定义好,他的内容和长度就不可改变了
StringBuffer 相当于一个字符容器,他的长度和内容是可变的。
```java
/* 线程安全的可变字符序列。
一个类似于 String 的字符串缓冲区,但不能修改。
虽然在任意时间点上它都包含某种特定的字符序列,
但通过某些方法调用可以改变该序列的长度和内容
*/
// StringBuffer() 构造一个其中不带字符的字符串缓冲区,初始容量为 16 个字符。
StringBuffer sb = new StringBuffer();
int capacity = sb.capacity();
**System.out.println(capacity); //获取容量**
**// StringBuffer( int capacity)构造一个不带字符,但具有指定初始容量的字符串缓冲区。**
StringBuffer sb2 = new StringBuffer(1000);
int capacity1 = sb2.capacity();
System.out.println(capacity1);
//StringBuffer(String str)
// 构造一个字符串缓冲区,并将其内容初始化为指定的字符串内容。
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);
public StringBuffer append (String str):可以把任意类型数据添加到字符串缓冲区里面, 并返回字符串缓冲区本身
StringBuffer sb = new StringBuffer();
//往容器中追加内容 使用append
//StringBuffer sb2 = sb.append(100);
//System.out.println(sb==sb2);
sb.append(100).append(3.14).append("abc");
String s = sb.toString();//StringBuffer 重新了toString() 把容器中的数据拼接成字符串返回
StringBuffer sb2 = sb.insert(2, "hehe");//在指定索引的前面插入内容,返回的还是容器本身
sb.deleteCharAt(3); //根据索引删除容器中的某个字符,返回的还是原来的容器
sb.delete(3,sb.length()); //根据起始索引和终止索引,删除容器中的一段内容 ,返回的还是原来的容器
StringBuffer sb2= sb.replace(0, 3, "AAA");//根据起始索引和 终止索引,替换一段你指定的新内容,返回的还是你原来的容器
//反转容器中的容
StringBuffer reverse = sb.reverse(); //返回的还是你原来的容器
//根据指定的起始索引和结束索引,截取容器中的一段数据,以String类型返回
String substring = reverse.substring(0, 7);
//检索该字符串在容器中第一次出现的索引
int index = sb.indexOf("人");
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);
StringBuffer和StringBuilder的区别:
- StringBuffer 线程安全的可变字符序列 效率低
- StringBuilder 线程不安全的可变字符序列 效率高
// 基本类型 值传递 String 类型作为参数传递,跟基本类型是一样的
//引用类型 StringBuffer引用传递,形参的改变会影响实参