StringBuffer&StringBuilder类


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

 1 public class WordReverse {
 2     public static void main(String[] args) {
 3         String src = new String("welcome to China");
 4         //切分成字符串数组
 5         String[] words = src.split(" ");
 6         
 7         //用来装反转之后的字符串
 8         StringBuilder res = new StringBuilder();
 9         
10         //遍历数组,封装成StringBuilder对象
11         for(int i = 0;i<words.length;i++){
12             StringBuilder sb = new StringBuilder(words[i]);
13             res.append(sb.reverse()).append(" ");
14         }
15         
16         System.out.println(res.toString().trim());
17     }
18 }

且将新火试新茶,诗酒趁年华。
原文地址:https://www.cnblogs.com/share23/p/9617762.html