Java — StringBuilder

StringBuilder

  • 是一个可变对象,可以预分配缓冲区。在新增字符时,不会创建新的临时对象
  • 支持链式操作,实现链式操作的关键是返回实例本身

方法

构造函数

1)StringBuilder有四个构造函数:

  • StringBuilder() :value内容为空,并设置容量为16个字节;
  • StringBuilder(CharSequeceseq) :使用seq初始化,容量在此基础上加16;
  • StringBuilder(int capacity):设置特定容量;
  • StringBuilder(String str):使用str初始化,容量str大小的基础上加16;

2)append方法

由于继承了Appendable接口,所以要实现append方法,StringBuilder类对几乎所有的基本类型都重载了append方法

3)insert方法
可以控制插入的起始位置,也几乎对所有的基本类型都重载了insert方法:

4)其它会改变内容的方法
上面的那些方法会增加StringBuilder的内容,还有一些方法可以改变StringBuilder的内容:

  • StringBuilder delete(int start,int end) :删除从start到end(不包含)之间的内容;
  • StringBuilder deleteCharAt(int index) :删除index位置的字符
  • StringBuilderreplace(int start,int end,String str):用str中的字符替换value中从start到end位置的子序列;
  • StringBuilder reverse() :反转;
  • void setCharAt(int index,char ch):使用ch替换位置index处的字符;
  • void setLength(int newLength):可能会改变内容(添加’\0’);

5)其它常用方法

下面这些方法不会改变内容:

  • int capacity():返回value的大小即容量;
  • int length():返回内容的大小,即count;
  • char charAt(int index):返回位置index处的字符;
  • void ensureCapacity(int minimumCapacity):确保容量至少是minimumCapacity;
  • void getChars(int srcBegin,int srcEnd,char[] dst,int dstBegin):返回srcBegin到srcEnd的字符到dst;
  • int indexOf(String str):返回str第一次出现的位置;
  • int indexOf(String str,int fromIndex):返回从fromIndex开始str第一次出现的位置;
  • int lastIndexOf(String str):返回str最后出现的位置;
  • int lastIndexOf(String str,int fromIndex):返回从fromIndex开始最后一次出现str的位置;
  • CharSequence subSequence(int start,int end):返回字符子序列;
  • String substring(int start):返回子串;
  • String substring(int start,int end):返回子串;
  • String toString():返回value形成的字符串;
  • void trimToSize():缩小value的容量到真实内容大小;

例题

//例1:链式操作
public class Main {
    public static void main(String[] args) {
        var sb = new StringBuilder(1024);
        sb.append("Mr ")
          .append("Bob")
          .append("!")
          .insert(0, "Hello, ");
        System.out.println(sb.toString());
    }
}
//运行结构:Hello, Mr Bob!

//例2:链式操作
public class Main {
    public static void main(String[] args) {
        Adder adder = new Adder();
        adder.add(3)
             .add(5)
             .inc()
             .add(10);
        System.out.println(adder.value());
    }
}

class Adder {
    private int sum = 0;

    public Adder add(int n) {
        sum += n;
        return this;
    }

    public Adder inc() {
        sum ++;
        return this;
    }

    public int value() {
        return sum;
    }
}
//运行结果:19
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值