0
点赞
收藏
分享

微信扫一扫

Java字符串:StringBuffer和StringBuilder

彪悍的鼹鼠 2021-10-15 阅读 40
技术分享

StringBuffer和StringBuilder

Java提供了两个可变字符串类StringBuffer和StringBuilder,中文翻译为“字符串缓冲区”。

StringBuffer是线程安全的,它的方法是支持线程同步,线程同步会操作串行顺序执行,在单线程环境下会影响效率。StringBuilder是StringBuffer的单线程版本,在Java5之后发布的,它不是线程安全的,但它的执行效率很高。StringBuffer和StringBuilder具有完全相同的 API,即构造方法和方法等内容一样。

下面以StringBuilder为例介绍,StringBuilder的中构造方法有4个:

  • StringBuilder():创建字符串内容是空的StringBuilder对象,初始容量默认为16个字符。
  • StringBuilder(CharSequence seq):指定CharSequence字符串创建StringBuilder对象。CharSequence接口类型,它的实现类有:String、StringBuffer和StringBuilder等,所以参数seq可以是String、StringBuffer和StringBuilder等类型。
  • StringBuilder(int capacity):创建字符串内容是空的StringBuilder对象,初始容量由参数capacity指定的。
  • StringBuilder(String str):指定String字符串创建StringBuilder对象。
字符串追加

字符串追加方法是append,append有很多重载方法,可以追加任何类型数据,它的返回值还是StringBuilder。

StringBuilder sb = new StringBuilder();
//返回值sb1依然是StringBuilder类型
StringBuilder sb1 = sb.append("hello");
//链式追加
sb.append("hello").append("world");
字符串的插入、删除和替换
  • StringBuilder insert(int offset, String str):在字符串缓冲区中索引为offset的字符位置之前插入str,insert有很多重载方法,可以插入任何类型数据。
  • StringBuilder delete(int start, int end):在字符串缓冲区中删除子字符串,要删除的子字符串从指定索引start开始直到索引end处的字符。start和end两个参数与substring(int beginIndex, int endIndex)方法中的两个参数含义一样。
  • StringBuilder replace(int start, int end, String str):字符串缓冲区中用str替换子字符串,子字符串从指定索引start开始直到索引end处的字符。start和end同delete(int start, int end)方法。
StringBuilder sb = new StringBuilder("hello world");
//在索引位置为5的前面插入字符串Java
sb.insert(5, "Java");
System.out.println(sb);//helloJava world
//前闭后开
sb.delete(0, 5);
System.out.println(sb);//Java world
sb.replace(0, 4, "hi");
System.out.println(sb);//hi world
举报

相关推荐

0 条评论