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());
}
}