3. 字符串变量
3.1 StringBuffer类(jdk 1.0 开始提供)
StringBuffer
类是一个线程安全的可变字符串类,它可以动态地修改字符串内容。主要特点如下:
StringBuffer
对象创建后,可以随时通过调用其方法来修改字符串内容。StringBuffer
类的方法包括字符串的拼接、插入、删除、反转等操作,使得对字符串的操作更加灵活。- 由于
StringBuffer
是线程安全的,适用于在多线程环境下对字符串进行修改的情况。 由于线程安全的特性,StringBuffer的性能相对较低,适用于单线程环境或者对线程安全要求比较高的场景。
使用示例:
StringBuffer sb = new StringBuffer(); // 创建一个空的StringBuffer对象
sb.length(); // 返回 StringBuffer 中字符序列的长度
sb.append("Hello"); // 追加字符串
sb.insert(5, " "); // 在指定位置插入字符串
sb.delete(0, 2); // 删除指定范围内的字符 [0,2)
sb.deleteCharAt(0); // 删除某个位置
sb.reverse(); // 反转字符串
sb.replace(0, 1, "h"); //替换字符
String result = sb.toString(); // 将StringBuffer对象转换为字符串
3.2 StringBuilder类(jdk 1.5 开始提供)
StringBuilder
类也是一个可变的字符串类,与StringBuffer类功能类似,但是StringBuilder类不是线程安全的,因此性能略高。主要特点如下:
StringBuilder
对象创建后,可以通过调用其方法来动态地修改字符串内容,与StringBuffer类相同。StringBuilder
类的方法包括字符串的拼接、插入、删除、反转等操作,与StringBuffer类相同。- 由于
StringBuilder
不是线程安全的,适用于单线程环境下对字符串进行修改的场景,性能相对较高。
使用示例:
StringBuilder sb = new StringBuilder(); // 创建一个空的StringBuilder对象
sb.append("Hello"); // 追加字符串
sb.insert(5, " "); // 在指定位置插入字符串
sb.delete(0, 2); // 删除指定范围内的字符
sb.reverse(); // 反转字符串
String result = sb.toString(); // 将StringBuilder对象转换为字符串
// StringBuilder --> String
String str = sb.toString();
System.out.println(str);int capacity = sb.capacity();
System.out.println(capacity); // 输出为默认容量或者根据实际字符串长度调整后的值
》总结:
- 当需要对字符串进行频繁且线程安全的修改时,推荐使用
StringBuffer
类。 - 当对字符串进行频繁但不涉及多线程的修改时,推荐使用
StringBuilder
类,因为它具有更好的性能。 - 无论使用
StringBuffer
还是StringBuilder
,都可以通过其方法来进行字符串的拼接、插入、删除和反转等操作。都继承自抽象类AbstractStringBuilder
。