Java基础>18 - StrngBuffer、StringBuilder

学习总结:
链接:【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

线程安全:
同一个时间里,只允许一个线程操作一段程序。线程不安全即允许多个线程同时操作一段程序。

你可能感兴趣的:(Java基础)