学习总结:
链接:【Java基础、springboot、springcloud、docker 等,学习目录】
由【上一节】知道,字符串是常量,创建之后不能够被修改,那么字符串对象的改变必然会创建一个新的字符串,频繁修改导致String对象泛滥。
StringBuffer:
字符串缓冲类,储存字符的容器。器默认容器大小为16,如果容器不够使用了,自动扩容:1倍 + 2.
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append("ronron");
System.out.println(stringBuffer.capacity()); // 16
stringBuffer.append("ronronronronron");
System.out.println(stringBuffer.capacity()); // 34
1、构造:
// 无参构造
StringBuffer stringBuffer = new StringBuffer();
// 指定容器初始长度
StringBuffer stringBuffer = new StringBuffer(6);
// 初始字符
StringBuffer stringBuffer = new StringBuffer(“ron”);
2、方法:
// 添加:
1、append(Object obj):添加任意数据到容器中。
2、insert(int offset, Object obj):在指定索引位置添加任意内容。
// 删除:
1、delete(int start, int end):指定索引开始于结束位置删除。
2、deleteCharAt(int index):根据指定索引值删除一个字符。
// 查找:
int o = stringBuffer.indexOf("o"); // 第一次出现的位置
int r = stringBuffer.indexOf("r", 3); // 指定开始查找的位置查找指定字符第一次出现的位置
lastIndexOf()
// 其他:
capacity():容器长度
length():字符个数
reverse():翻转字符缓冲区内容。// nornornornor
replace(int start, int end, String str):替换
substring()
ensureCapacity(int num); // 指定StringBuffer 内部字符数组长度。
StringBuilder 与 StringBuffer 区别:
相同: 都是字符串缓冲类。方法一致。
不同:
1、StringBuffer 线程安全,操作效率低。
2、StringBuilder 线程非安全,效率高。
执行速度比较:StringBuilder > StringBuffer > String
线程安全:
同一个时间里,只允许一个线程操作一段程序。线程不安全即允许多个线程同时操作一段程序。
通俗点:某些类创建对象,执行它的方法时,对其上锁。某一时刻只能有一个线程去执行某个方法。