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 }
且将新火试新茶,诗酒趁年华。