常用类——Java.lang.StringBuilder/Java.lang.StringBuffer
Java.lang.StringBuilder/Java.lang.StringBuffer
简介:
因为Java.lang.String是一个不可变的类,所以Java又提供了两个不同的动态字符串类(弹性字符串),Java.lang.StringBuilder/Java.lang.StringBuffer这两个类的功能几乎是完全一样的。
Java.lang.StringBuilder/Java.lang.StringBuffer区分:
这两个类的功能基本相同,区别在于:
StringBuilder是轻量级字符串类(线程非安全,但是性能高)
StringBuffer是重量级字符串类(线程安全的,但是性能差)
创建Java.lang.StringBuilder对象
注意⚠️
如果使用空参构造,则默认16个容量,如果使用字符串来构建,则容量为初始16 + 初始字符串长度
如果容器容量撑满,则会自动扩容为(原来+1)的一倍
StringBuilder stringBuilder = new StringBuilder();
此时容量为16
StringBuilder stringBuilder = new StringBuilder("abc");
此时容量为19
stringBuilder.append("def").append("def").append("def").append("def").append("def").append("de");
此时容量为40
常用方法:
⚠️注意: StringBuilder的操作是针对原始字符串的操作
1.部分与String方法相同
部分方法与String的方法charAt(),compareTo(),indexOf(),lastIndexOf(),substring()...相同
弹性容器StringBuilder特有方法
2.append()
拼接方法
StringBuilder stringBuilder = new StringBuilder("abc");
//拼接字符串
stringBuilder.append("def").append("def").append("def").append("def").append("def").append("de");
System.out.println(stringBuilder);
System.out.println(stringBuilder.capacity());
3.capacity()
获取字符串容量
stringBuilder.append("def").append("def").append("def").append("def").append("def").append("de");
System.out.println(stringBuilder.capacity());
结果:40
4.trimToSize()
压缩字符串存储空间
注意:由于弹性容器实际存储的容量往往会大于真正数据的容量,所以比较浪费资源,所以我们可以通过这个方法来进行压缩
StringBuilder stringBuilder = new StringBuilder("abc");
stringBuilder.append("def").append("def").append("def").append("def").append("def").append("de");
stringBuilder.trimToSize();
System.out.println(stringBuilder.capacity());
压缩后容量为:20,即等于容器中实际字符长度。
5.delete()/deleteCharAt()
delete() 根据下标删除指定范围区间字符串(前闭后开区间)
例如(0,3)不包括3
deleteCharAt()根据下标删除指定字符
//删除指定范围区间的字符串,前闭后开
stringBuilder.delete(0,3);
6.insert()
插入字符串
//3.插入方法
stringBuilder.insert(1, "ABC");
7.replace
替换字符串(注意区别String类的replace方法)
String中的replace方法是传入两个参数,把所有符合A参数的内容都替换为B参数的内容
StringBuilder中的replace方法是三个参数,把指定区间(前开后闭)中的内容替换为指定内容
例如(0,3)不包括3
stringBuilder.replace(0, 3, "AAA");
8.reverse()
反转字符串
注意⚠️:可以把字符串转换为Stringbuilder类然后调用反转方法然后利用to String再转换为Sting类型。
/**
* Java原生反转字符串的方式
*/
public String reverseStr(String str){
//把String转成StringBuilder,然后调用反转方法,再转换回String
return new StringBuilder(str).reverse().toString();
}
StringBuilder和String可以相互转换:
1.String–>StringBuilder:可以使用StringBuilder的构造方法。
StringBuilder(String str):构造一个字符串生成器,并初始化为指定的字符串内容。
2.StringBuilder–>String:可以使用StringBuilder中的toString方法。
public String toString():将当前StringBuilder对象转换为String对象。
扩展:若希望将StringBuffer在屏幕上显示出来, 则必须首先调用toString方法把它变成字符串常量, 因为PrintStream的方法println()不接受StringBuffer类型的参数.
toString()方法在此的作用是将StringBuffer类型转换为String类型
toString原理

浙公网安备 33010602011771号