Java基础 第三节 第四课

网友投稿 545 2022-05-30

StringBuilder 类

字符串拼接问题

StringBuilder 概述

构造方法

常用方法

append 方法

toString 方法

字符串拼接问题

由于 String 类的对象内容不可改变, 所以每当进行字符串拼接时, 总会在内存中创建一个新的对象. 例如:

public class Test17 { public static void main(String[] args) { String s = "Hello"; s += "World"; System.out.println(s); } }

1

2

3

4

5

6

7

在 API 中对 String 类有这样的描述: 字符串是常量, 它们的值在创建后不能被更改.

根据这句话分析我们的代码, 其实总共产生了三个字符串, 即 “Hello”, “World” 和 “helloworld”. 引用变量 s 首先指向 Hello 对象, 最终指向拼接出来的新字符串对象, 即 HelloWorld.

由此可知, 如果对字符串进行拼接操作, 每次拼接, 都会构建一个新的 String 对象, 既费时, 有浪费空间. 为了解决这一问题, 可以使用java.lang.StringBuilder类.

StringBuilder 概述

查阅java.lang.StringBuilder的 API, StringBuilder 又称为可变字符序列. 它是一个类似于 String 的字符串缓冲区, 通过某些方法调用可以改变该序列的长度和内容.

原来 StringBuilder 是个字符串的缓冲区, 即它是一个容器, 容器中可以组装很多字符串. 并且能够对其中的字符串进行各种操作.

它的内部拥有一个数组用来存放字符串内容, 进行字符串拼接时, 直接在数组中加入新内容. StringBuilder 会自动维护的扩容. 原理如下图所示: (默认 16 字符空间, 超过子欧诺个扩充)

构造方法

根据 StringBuilder 的 API 文档, 常用构造方法有 2 个:

public StringBuilder(): 构造一个空的 StringBuilder 容器

public StringBuilder(String str): 构造一个 StringBuilder 容器, 并将字符串添加进去

public class Test18 { public static void main(String[] args) { // 无参构造 StringBuilder sb1 = new StringBuilder(); System.out.println(sb1); // 输出结果: (空白) // 有参构造 StringBuilder sb2 = new StringBuilder("iamlittlewhite"); System.out.println(sb2); // 输出结果: iamlittlewhite } }

1

2

3

4

5

6

7

8

9

10

11

常用方法

StringBuilder 常用的方法有 2 个:

public StringBuilder append(...): 添加任意类型数据的字符串形式, 并返回当前对象自身

public String toString(): 将当前 StringBuilder 对象转换为 String 对象

append 方法

append 方法具体有多种重载形式, 可以接收任意类型的参数. 任何数据作为参数都会将对应的字符串内容添加到 StringBuilder 中. 例如:

public class Test19 { public static void main(String[] args) { // 创建对象 StringBuilder builder = new StringBuilder(); // public StringBuilder append(任意类型) StringBuilder builder2 = builder.append("hello"); // 对比一下 System.out.println("builder:"+builder); System.out.println("builder2:"+builder2); System.out.println(builder == builder2); // 可以添加 任何类型 builder.append("hello"); builder.append("world"); builder.append(true); builder.append(100); // 在我们开发中,会遇到调用一个方法后, 返回一个对象的情况. 然后使用返回的对象继续调用方法. // 这种时候, 我们就可以把代码现在一起, 如append方法一样, 代码如下 // 链式编程 builder.append("hello").append("world").append(true).append(100); System.out.println("builder:"+builder); } } 输出结果: builder:hello builder2:hello true builder:hellohelloworldtrue100helloworldtrue100

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

注: StringBuilder 已经覆盖重写了 Object 当中的 toString 方法.

toString 方法

通过 toString 方法, StringBuilder 对象会转换为不可变的 String 对象.

public class Test20 { public static void main(String[] args) { // 链式创建 StringBuilder sb = new StringBuilder("Hello").append("World").append("Java"); // 调用方法 String str = sb.toString(); System.out.println(str); // 调试输出: HelloWorldJava } }

1

2

3

4

5

6

7

8

Java基础 第三节 第四课

9

Java

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:uni-id入门(四)---过拦截用户某些请求
下一篇:Pandas完美读取html格式的Excel所有隐藏数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~