首页 理论教育 Java基础教程:StringBuilder类用法

Java基础教程:StringBuilder类用法

时间:2023-10-19 理论教育 版权反馈
【摘要】:StringBuilder类实现了Serializable和CharSequence接口,可以进行序列化传输和字符串相关操作。动手写6.3.1其运行结果为:图6.3.1创建StringBuilder对象2.append()方法StringBuilder类中的append()方法将基本类型数值和字符数组转换成字符串,并将其添加到StringBuilder对象的末端。当入参start小于零或者start大于end时,会抛出StringIndexOutOfBoundsException异常;如果end大于StringBuilder对象的最大长度,会直接更正为最大长度。动手写6.3.6StringBuilder对象的初始容量都是16,当超过时会扩容。

Java基础教程:StringBuilder类用法

StringBuilder类实现了Serializable和CharSequence接口,可以进行序列化传输和字符串相关操作。StringBuilder类中最常用的是append()方法和insert()方法,通过重载的方法,StringBuilder提供了这两种操作的多种入参重载方法。append()方法可以将字符或字符串添加到StringBuilder对象的末尾,而insert()方法可以将字符或字符串添加到StringBuilder对象的指定位置。

1.创建StringBuilder对象

StringBuilder类需要通过new关键字来创建一个新的对象,并不能直接通过“=”将字符串常量引用赋值给StringBuilder的对象。StringBuilder提供了四种构造方法用以初始化StringBuilder对象,定义格式如下:

StringBuilder默认创建的是一个初始容量为16个字符的对象;我们也可以通过构造器创建一个指定容量的StringBuilder对象。值得注意的是,StringBuilder(CharSequence seq)方法创建的对象总容量是16加上入参seq的字符个数。

动手写6.3.1

其运行结果为:

图6.3.1 创建StringBuilder对象

2.append()方法

StringBuilder类中的append()方法将基本类型数值和字符数组转换成字符串,并将其添加到StringBuilder对象的末端。

动手写6.3.2

其运行结果为:

图6.3.2 append()方法添加内容

3.insert()方法

insert()方法将基本类型数值和字符数组转换成字符串,插入到StringBuilder对象指定入参索引位置处,其他字符位置依次向后移。

动手写6.3.3

所谓插入到指定索引位置,是指插入的第一个字符的位置就是指定的索引位置。如上面示例中,0处插入true即在字符串开头插入true字符串,1处插入即插入到索引0的后面,即字母t后,运行结果为:

图6.3.3 insert()方法插入到指定索引位置

4.delete()方法

StringBuilder中的delete()方法可以删除该对象中指定索引范围的字符内容,定义格式如下:

如果入参start和end相同,该方法不会做任何删除操作。

动手写6.3.4

其运行结果为:

图6.3.4 delete()方法删除指定索引范围内容

通过阅读delete()方法的JDK源码可以看到,它实际上使用了AbstractStringBuilder类中的delete()方法。当入参start小于零或者start大于end时,会抛出StringIndexOutOfBoundsException异常;如果end大于StringBuilder对象的最大长度,会直接更正为最大长度。

5.charAt()方法

该方法会返回在StringBuilder对象序列中的入参索引位置的字符值,第一个字符的位置为0,最后一个字符的索引位置为总长度-1。

动手写6.3.5(www.xing528.com)

运行结果为:

图6.3.5 charAt()方法获取指定索引的字符

6.capacity()方法

该方法返回当前容量,以字符为单位。

动手写6.3.6

StringBuilder对象的初始容量都是16,当超过时会扩容。上面示例中添加“www.01kuaixue.com”字符串后对象扩容到了34,运行结果为:

图6.3.6 capacity()方法获取容量

7.replace()方法

StringBuilder类中的replace()方法和String中的方法入参有些区别,定义如下:

StringBuilder类中的replace()方法可以将整个字符串序列中指定范围内的字符序列统一替换成新的入参字符串。

动手写6.3.7

其运行结果为:

图6.3.7 replace()方法替换字符串

8.reverse()方法

reverse()方法将字符串序列反转,创建一个新的StringBuilder对象。

动手写6.3.8

其运行结果为:

图6.3.8 reverse()方法反转StringBuilder对象字符序列

9.toString()方法

动手写6.3.1中,直接打印StringBuilder对象就可以将内容打印出来,也可以使用重载的toString()方法来直接创建一个String类型的对象。

动手写6.3.9

上面示例中,三种打印字符串的方法结果都是一样的,运行结果为:

图6.3.9 toString()方法

通过阅读JDK源码,我们可以看到StringBuilder重载的toString()方法实际上是利用String类中的构造方法new String(value, 0, count)来创建一个新的String对象。而System.out.println()方法的入参可以直接是StringBuilder类对象,这在源码中也可以找到原因——println()方法的源码中使用了String.valueOf(Object o)方法,将StringBuilder对象转成字符串。

Java的底层实现中有很多很巧妙的编程设计思想,因此经常阅读JDK源码可以帮助我们掌握Java的一些底层算法和实现,也有助于我们学习Java的基础知识。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈