Excel中如何计算字符串的长度(excel求字符串长度)
663
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
9
Java
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。