StringBuilder类
StringBuilder 可以看成是一个容器,创建之后里面的内容是可变的。
当我们在拼接字符串和反转字符串的时候会使用到
一、基本使用
public class StringBuilderDemo3 {
public static void main(String[] args) {
//1.创建对象
StringBuilder sb = new StringBuilder("abc");
//2.添加元素
/*sb.append(1);
sb.append(2.3);
sb.append(true);*/
//反转
sb.reverse();
//获取长度
int len = sb.length();
System.out.println(len);
//打印
//普及:
//因为StringBuilder是Java已经写好的类
//java在底层对他做了一些特殊处理。
//打印对象不是地址值而是属性值。
System.out.println(sb);
}
}
2. 向StringBuilder添加内容
StringBuilder提供了多种方法来向字符序列中添加内容,最常用的方法是append():
-
追加字符串:
sb.append(" World");这将字符串
" World"追加到sb的末尾。 -
追加其他类型的数据:
append()方法被重载,可以接受多种类型的数据,如char、int、double、boolean等。例如:sb.append('!'); sb.append(123); sb.append(45.67); sb.append(true);
扩展:链式编程
public class StringBuilderDemo4 {
public static void main(String[] args) {
//1.创建对象
StringBuilder sb = new StringBuilder();
//2.添加字符串
sb.append("aaa").append("bbb").append("ccc").append("ddd");
System.out.println(sb);//aaabbbcccddd
//3.再把StringBuilder变回字符串
String str = sb.toString();
System.out.println(str);//aaabbbcccddd
}
}
二、常用方法
3. 插入内容
StringBuilder提供了insert()方法,用于在指定的位置插入内容:
-
插入字符串:
sb.insert(5, "beautiful ");这将在索引为5的位置插入字符串
"beautiful "。 -
插入其他类型的数据:
与append()方法类似,insert()方法也被重载,可以接受多种类型的数据。
4. 删除内容
StringBuilder提供了delete()和deleteCharAt()方法来删除内容:
-
删除指定范围的字符:
sb.delete(0, 5);这将删除从索引0到索引5(不包括索引5)之间的字符。
-
删除指定索引的字符:
sb.deleteCharAt(2);这将删除索引为2的字符。
5. 替换内容
StringBuilder提供了replace()方法来替换指定范围的字符:
-
替换指定范围的字符:
sb.replace(0, 5, "Hi");这将把从索引0到索引5(不包括索引5)之间的字符替换为
"Hi"。
6. 反转字符串
StringBuilder提供了reverse()方法来反转字符序列:
sb.reverse();
7. 获取字符串长度
StringBuilder提供了length()方法来获取字符序列的长度:
int length = sb.length();
8. 转换为字符串
StringBuilder提供了toString()方法,用于将字符序列转换为String对象:
String str = sb.toString();
9. 设置字符
StringBuilder提供了setCharAt()方法来设置指定索引处的字符:
sb.setCharAt(2, 'A');
这将把索引为2的字符设置为'A'。
10. 截取子字符串
StringBuilder提供了substring()方法来截取子字符串:
String subStr = sb.substring(2, 5);
这将截取从索引2到索引5(不包括索引5)之间的子字符串。
注意事项
- 线程安全:
StringBuilder不是线程安全的,因此在多线程环境中使用时需要注意同步问题。如果需要线程安全的字符串构建器,可以使用StringBuffer。 - 容量管理:
StringBuilder内部维护一个字符数组来存储字符序列。当字符序列的长度超过数组的容量时,StringBuilder会自动扩容。扩容操作可能会带来一定的性能开销,因此可以通过构造方法指定一个合适的初始容量来减少扩容次数。
示例代码
以下是一个简单的示例,演示了如何使用StringBuilder来构建和修改字符串:
public class StringBuilderExample {
public static void main(String[] args) {
// 创建一个StringBuilder对象并初始化
StringBuilder sb = new StringBuilder("Hello");
// 追加内容
sb.append(" World");
// 插入内容
sb.insert(5, "beautiful ");
// 替换内容
sb.replace(0, 5, "Hi");
// 删除内容
sb.delete(0, 3);
// 反转字符串
sb.reverse();
// 获取字符串长度
int length = sb.length();
System.out.println("Length: " + length);
// 转换为字符串并输出
String str = sb.toString();
System.out.println("Result: " + str);
}
}
运行上述代码将输出:
Length: 13
Result: !dlrow dlroweutibaeH
通过示例代码,你可以看到如何使用StringBuilder来高效地构建和修改字符串。