StringBuilder类常用方法
StringBuilder 是 Java 中常用的字符串缓冲区类,适用于频繁修改字符串的场景。
1. append()
: 将指定字符串、字符、布尔值或其他数据类型的表示追加到字符串缓冲区的末尾。
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World"); // sb 变为 "Hello World"
重载方法:
sb.append(true); // 将布尔值追加到字符串缓冲区
sb.append(123); // 将整数追加到字符串缓冲区
2. insert()
:在指定位置插入指定字符串、字符、布尔值或其他数据类型的表示。
Tips:insert(i)是插在插入位置之前!
StringBuilder sb = new StringBuilder("Hello");
sb.insert(5, " World"); // sb 变为 "Hello World"
重载方法:
sb.insert(0, true); // 在指定位置插入布尔值
sb.insert(6, 123); // 在指定位置插入整数
3. replace()
:用新的字符串替换指定范围内的字符序列。
不包含结束位置下标。
StringBuilder sb = new StringBuilder("Hello World");
sb.replace(6, 11, "Java"); // sb 变为 "Hello Java"
4. delete()
:删除指定范围内的字符序列。
不包含结束位置下标。
StringBuilder sb = new StringBuilder("Hello World");
sb.delete(6, 11); // sb 变为 "Hello"
5. deleteCharAt()
:删除指定索引处的字符。
StringBuilder sb = new StringBuilder("Hello");
sb.deleteCharAt(1); // sb 变为 "Hllo"
6. reverse()
: 反转字符串缓冲区中的字符序列。
StringBuilder sb = new StringBuilder("Hello");
sb.reverse(); // sb 变为 "olleH"
7. charAt()
:获取指定索引处的字符。
StringBuilder sb = new StringBuilder("Hello");
char c = sb.charAt(1); // c 的值为 'e'
8. setCharAt()
:将指定索引处的字符替换为新的字符。
StringBuilder sb = new StringBuilder("Hello");
sb.setCharAt(1, 'a'); // sb 变为 "Hallo"
9. substring()
:返回一个新的字符串,其中包含字符串缓冲区中指定范围内的字符。
不包含结束位置下标。
StringBuilder sb = new StringBuilder("Hello World");
String sub = sb.substring(6, 11); // sub 的值为 "World"
10. indexOf()
:返回指定子字符串第一次出现的索引。
StringBuilder sb = new StringBuilder("Hello World");
int index = sb.indexOf("World"); // index 的值为 6
11. lastIndexOf()
:返回指定子字符串最后一次出现的索引。
StringBuilder sb = new StringBuilder("Hello World Hello");
int lastIndex = sb.lastIndexOf("Hello"); // lastIndex 的值为 12
12. length()
:返回字符串缓冲区中的字符数。
StringBuilder sb = new StringBuilder("Hello");
int len = sb.length(); // len 的值为 5
13. capacity()
:返回当前容量,即可以存储的字符数。
StringBuilder sb = new StringBuilder(20);
int cap = sb.capacity(); // cap 的值为 20
14. ensureCapacity()
: 确保容量至少等于指定的最小值。
StringBuilder sb = new StringBuilder();
sb.ensureCapacity(20); // 确保容量至少为 20
15. trimToSize()
:调整容量以适应字符串的当前大小。
StringBuilder sb = new StringBuilder("Hello");
sb.trimToSize(); // 调整容量以适应字符串的当前大小
16. toString()
:将字符串缓冲区中的字符序列转换为字符串。
StringBuilder sb = new StringBuilder("Hello");
String str = sb.toString(); // str 的值为 "Hello"
17. setLength()
:用于设置当前串的长度。
如果新长度小于当前长度,那么超出部分的字符将会被丢弃;如果新长度大于当前长度,那么超出部分的字符将会以 null 字符填充。
以下是 setLength() 方法的示例:
StringBuilder sb = new StringBuilder("Hello World");
sb.setLength(5); // sb 变为 "Hello"
在这个示例中,setLength() 方法将 StringBuilder 对象 sb 的长度设置为 5,因此多余的字符 " World" 就被丢弃了。
setLength() 方法还有一个重载版本,它接受一个 int 类型的参数和一个 char 类型的参数,用来设置新长度和填充字符。如果新长度小于当前长度,那么超出部分的字符将会被丢弃;如果新长度大于当前长度,那么超出部分的字符将会以指定的填充字符填充。
以下是 setLength() 方法的重载示例:
StringBuilder sb = new StringBuilder("Hello");
sb.setLength(7, '!'); // sb 变为 "Hello!!!"
在这个示例中,setLength() 方法将 StringBuilder 对象 sb 的长度设置为 7,并在超出部分使用 ‘!’ 填充。因此,sb 的值变为 “Hello!!!”。
18. equals()
:用于比较两个 StringBuilder 对象的内容是否相等。
实际上比较的是对象的引用是否相等,而不是对象内容是否相等!
下面是 equals() 方法的示例:
StringBuilder sb1 = new StringBuilder("Hello");
StringBuilder sb2 = new StringBuilder("Hello");
boolean result = sb1.equals(sb2); // result 的值为 false
//尽管 sb1 和 sb2 中的内容相同,但由于它们是不同的对象,所以 equals() 方法返回的结果是 false。
这里需要注意的是,StringBuilder 类中的 equals() 方法并没有重写 Object 类中的 equals() 方法,而是沿用了 Object 类中的 equals() 方法。
它实际上比较的是对象的引用是否相等,而不是对象内容是否相等。
如果需要比较两个 StringBuilder 对象的内容是否相等,可以先将其转换为 String 类型,然后使用 String 类的 equals() 方法进行比较,或者直接使用 toString() 方法将其转换为 String 类型再进行比较。
请注意,StringBuilder 类中没有重载的 equals() 方法来直接比较内容,因此在比较两个 StringBuilder 对象的内容时,需要转换为 String 或使用其他方法来实现内容比较。
19.isEmpty()
:用于检查 StringBuilder 对象是否为空。
StringBuilder sb = new StringBuilder();
boolean isEmpty = sb.isEmpty(); // 判断 StringBuilder 对象是否为空
if (isEmpty) {
System.out.println("StringBuilder 对象为空");
} else {
System.out.println("StringBuilder 对象不为空");
}