Java字符串整理笔记(三)

时间:2022-04-26 19:39:49

 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的内容,都是对字符串本身进行操作。