5. 使用StringBuilder类
String字符串对象的长度是固定的,它的内容不能被改变和编辑。每次使用“+”连接符来连接并生成新的字符串时,都要在内存中创建新的字符串对象,并为该对象分配新的空间,这在对
字符串执行重复修改的情况下,将极大地增加系统开销。使用StringBuilder类可以动态地更改字符串内容,如果有要频繁执行的字符串操作,使用StringBuilder会让字符串的执行效率大大提高。
5.1. 创建字符串生成器
5.1.1. StringBuilder()构造方法
该构造方法将创建一个空的字符串生成器。新创建的StringBuilder对象的初始容量为16个字符。语法如下:
new StringBuilder()
//new:Java语言的关键字,用于创建新的对象
5.1.2. StringBuilder(int capacity)构造方法
该构造方法将创建一个指定初始空间大小的字符串生成器。语法如下:
new StringBuilder(capacity)
//new:Java语言关键字
//capacity:这是一个整型数字,它定义了字符串生成器的初始容量
例如,创建容量为15的字符串生成器对象的代码如下:
StringBuilder builder=new StringBuilder(15);
5.1.3. StringBuilder(String str)构造方法
该构造方法使用指定的字符串创建并初始化一个字符串生成器,它的初始内容是指定的字符串的内容。语法如下:
new StringBuilder(String str)
//new:Java语言的关键字,用于创建新的对象
//str:这是一个字符串,它将作为新创建的字符串生成器的初始内容
例如,创建以“中国长城”为初始值的字符串生成器对象的代码如下:
StringBuilder builder=new StringBuilder("中国长城");
5.2. 字符串生成器的应用
StringBuilder类中提供了众多方法实现动态执行添加、删除、插入等字符串的编辑操作。该类的常用方法如下。
5.2.1. append()方法
该方法用于向字符串生成器中追加内容,这个方法有多个重载的实现,他们可以接受任何类型的数据,如int、String、double或者另一个字符串生成器等。语法如下:
append(content)
//content:这个参数是准备追加到字符串生成器中的内容。
5.2.2. delete(int start,int end)方法
该方法用于从字符串生成器中删除指定范围(从start到end-1)中的子字符串。语法如下:
delete(start,end)
//start:要删除的子字符串的起点位置
//end:要删除的子字符串的终点位置
例如,要从某某全称中删除“FirstName”,可调用此方法,代码如下:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
StringBuilder builder=new StringBuilder("ZhangXiaoMing"); //创建字符串生成器
builder.delete(0, 5); //删除子字符串
System.out.println(builder); //输出字符串
}
}
执行代码后输出:XiaoMing。
5.2.3. deleteCharAt(int index)方法
该方法删除指定字符串生成器中指定索引位置的字符。语法如下:
deleteCharAt(index)
//index:要删除的字符在字符串生成器中的索引位置
5.2.4. insert(int offset,arg)
该方法用于向字符串生成器中指定的位置插入数据内容,这些数据可以是int、float、char等类型或者其他对象。语法如下:
insert(offset,arg)
//offset:字符串生成器中的位置
//arg:将要插入到字符串生成器中的数据内容,该数据可以是任意类型的。
5.2.5. length()方法
该方法用于返回字符串生成器中内容的长度。语法如下:
length()
实例1.9演示String与StringBuilder添加字符串的区别,代码如下:
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
String testStr=new String("Java"); //定义String类对象
String testStr2=testStr+"教程"; //向字符串中添加数据
StringBuilder builder=new StringBuilder("Java"); //定义StringBuilder对象
StringBuilder builder2=builder.append("教程"); //向字符串中追加内容
System.out.println("使用String对象进行连接:"+testStr2); //输出String对象内容
System.out.println("使用StringBuilder进行连接:"+builder2);
}
}
执行其结果都是:Java教程。尽管结果一样,但使用String对象,其对象内容都发生改变,而针对StringBuilder对象,每次改变StringBuilder的内容,都是对字符串本身进行操作。