JDK1.8源码解读之StringBuilder

557 阅读1分钟

概述

可变的字符串序列,提供了和StringBuffer想对应的api,但不会保证同步。相对与StringBuffer,建议在单线程的情况下使用StringBuilder。StringBuilder在大多数实现下,有更高的性能。

继承关系

public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence 继承自 AbstractStringBuilder 类 实现了 java.io.Serializable, CharSequence 接口

成员属性

构造器

和StringBuffer类一样。 最明显的特点就是新建一个StringBuffer后,会将容量指定为实际容量+16。

public StringBuilder() {
    super(16);
}
public StringBuilder(int capacity) {
    super(capacity);
}
public StringBuilder(String str) {
    super(str.length() + 16);
    append(str);
}
public StringBuilder(CharSequence seq) {
    this(seq.length() + 16);
    append(seq);
}

关键方法

+ append()

将指定对象添加到StringBuilder末尾

@Override
public StringBuilder append(Object obj) {
    return append(String.valueOf(obj));
}
+ delete()

删除指定索引范围内的字符

@Override
public StringBuilder delete(int start, int end) {
    super.delete(start, end);
    return this;
}
+ replace()

将指定索引范围内的字符替换为目标字符串。

@Override
public StringBuilder replace(int start, int end, String str) {
    super.replace(start, end, str);
    return this;
}
+ insert()

将目标字符串插入到指定的位置

@Override
public StringBuilder insert(int offset, String str) {
    super.insert(offset, str);
    return this;
}
+ indexOf()

计算目标字符串第一次出现的位置

@Override
public int indexOf(String str) {
    return super.indexOf(str);
}
+ lastIndexOf()

计算目标字符串最后一次出现的位置

@Override
public int lastIndexOf(String str) {
    return super.lastIndexOf(str);
}
+ reverse()

将StringBuilder的倒序排列

@Override
public StringBuilder reverse() {
    super.reverse();
    return this;
}

实现原理

底层的存储结构,是和父类AbstractStringBuilder一样的,都是字符数组char[] value。

相关阅读

JDK1.8源码解读之 AbstractStringBuilder

JDK1.8源码解读之 StringBuffer

希望和大家多多交流


我16年毕业以后,做的是前端,目前打算深入学习java开发。内容有任何问题,欢迎各位小伙伴们指正,也希望小伙伴们给我点赞和关注,给我留言,一起交流讨论,共同进步。