八股
- StringBuilder与StringBuffer的公共父类是AbstractStringBuilder,提供了很多操作修改字符串的方法。
- StringBuilder非线程安全,StringBuffer使用synchronized给方法加了同步锁保证线程安全。
- 字符串的“+”是通过StringBuilder的append方法实现的,尽量避免在循环内使用“+”(会创建过多的StringBuilder对象)。
基本使用
StringBuilder builder = new StringBuilder();
builder.append("abc");
builder.append("a").append("b").append("c");
builder.append('a');
builder.appendCodePoint(97);
// builder.append('a'+1)被添加到字符串末尾的是98,而不是a
builder.deleteCharAt(builder.length()-1); // 删除最后一个字符
builder.delete(6,14); // 删除索引[6,14)的字符
builder.setLength(0); // 清空
builder.setCharAt(5, ' '); // 索引为5的位置,字符换做空格
builder.insert(0, ' '); // 索引为0的位置,前方插入空格(空格成为指定索引位置的字符)
StringBuilder reverseBuilder = builder.reverse(); // 反转
String substr = builder.substring(6, 14) // 截取[6,14)子串,注意返回值是String类型,而不是StringBuilder