StringBuffer&StringBuilder类

时间:2021-01-20 20:11:13

0. 说明


1. 总体说明

  当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。

  和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。


2. StringBuffer

  2.1 说明

  类似于String的字符缓冲区,是一个容器。
  其内部维护了一个字符数组,用于存储字符。
  StringBuffer可以对字符串内容进行增删。
  很多方法与String相同。

  2.2 StringBuffer特有方法

方法 说明
append(String s) 将指定的字符串追加到此字符序列。
insert(int offset,String str) 将字符串插入此字符序列中。
delete(int start, int end) 移除此序列的子字符串中的字符。包前不包后:[start,end)
reverse() 将此字符序列用其反转形式取代。

replace(int start, int end, String str)

使用给定 String 中的字符替换此序列的子字符串中的字符。

3. StringBuilder

  StringBuilder 类在 Java 5 中被提出。

  StringBuffer:  同步的,速度相对StringBuilder稍慢,线程安全。

  StringBuilder:   非同步的,速度快,线程不安全。

  由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。

  同步:发送方发出数据后,等接收方发回响应以后才发下一个数据包的通讯方式。
  异步:发送方发出数据后,不等接收方发回响应,接着发送下个数据包的通讯方式。


4. 练习

  将字符串中每个单词反转,例如:
  welcome to China
  emoclew ot anihC

 public class WordReverse {
public static void main(String[] args) {
String src = new String("welcome to China");
//切分成字符串数组
String[] words = src.split(" "); //用来装反转之后的字符串
StringBuilder res = new StringBuilder(); //遍历数组,封装成StringBuilder对象
for(int i = 0;i<words.length;i++){
StringBuilder sb = new StringBuilder(words[i]);
res.append(sb.reverse()).append(" ");
} System.out.println(res.toString().trim());
}
}