使用 StringBuilder 构建字符串
高效拼接
使用 StringBuilder 构建字符串 是 CoddyKit 上的免费 Java Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Java Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Java Academy 课程共包含 4 节课。
可变的字符串构建器
StringBuilder 是一个可变的字符序列。与 String 不同,您可以直接修改其内容,因此它非常适合高效构建文本。
创建 StringBuilder
使用 new StringBuilder() 可以创建一个空的构建器,也可以传入初始文本,让构建器从已有内容开始。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
StringBuilder named = new StringBuilder("Hello");
System.out.println("empty length: " + sb.length());
System.out.println("named: " + named);
}
}追加文本
append 方法会将内容添加到末尾。它接受字符串、数字、字符、布尔值等多种类型。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("Count: ");
sb.append(5);
sb.append(' ');
sb.append(true);
System.out.println(sb);
}
}方法链式调用
append 会返回同一个构建器,因此可以在一个表达式中流畅地连续调用多个方法。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("a").append("b").append("c").append(123);
System.out.println(sb);
}
}在循环中构建
这是最主要的使用场景。在循环中追加内容,而不必每次都创建新对象,最后再统一转换一次。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= 10; i++) {
sb.append(i).append(' ');
}
System.out.println(sb.toString().trim());
}
}转换为字符串
完成修改后,调用 toString(),即可从构建器中获取一个普通的不可变 String。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("result");
String finalText = sb.toString();
System.out.println(finalText.toUpperCase());
}
}使用分隔符连接
您可以通过在各项之间追加分隔符来构建逗号分隔的列表,同时要谨慎处理最后一项。
public class Main {
public static void main(String[] args) {
String[] names = {"Ann", "Ben", "Cara"};
StringBuilder sb = new StringBuilder();
for (int i = 0; i < names.length; i++) {
sb.append(names[i]);
if (i < names.length - 1) {
sb.append(", ");
}
}
System.out.println(sb);
}
}读取长度
length() 会告诉您构建器当前包含多少个字符。每次追加内容后,它都会更新。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
sb.append("12345");
System.out.println("Length: " + sb.length());
}
}访问字符
使用 charAt(index) 可以根据位置读取单个字符,这与使用 String 时一样。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("Coddy");
System.out.println("First: " + sb.charAt(0));
System.out.println("Last: " + sb.charAt(sb.length() - 1));
}
}容量与长度
构建器会维护一个内部缓冲区(容量),并自动扩展。知道最终大小时,可以传入初始容量,以减少调整大小的次数。
public class Main {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder(100);
sb.append("short");
System.out.println("Length: " + sb.length());
System.out.println("Capacity at least: " + (sb.capacity() >= 100));
}
}实用的构建器
综合运用这些知识:通过链式追加和循环,高效地构建一个小型报告字符串。
public class Main {
public static void main(String[] args) {
int[] sales = {100, 250, 75};
StringBuilder report = new StringBuilder("Sales Report\n");
int total = 0;
for (int i = 0; i < sales.length; i++) {
report.append("Day ").append(i + 1).append(": ").append(sales[i]).append('\n');
total += sales[i];
}
report.append("Total: ").append(total);
System.out.println(report);
}
}快速检查
为什么 StringBuilder 比在循环中反复使用 + 拼接更高效?
回顾
您已经学习了如何使用 StringBuilder 构建字符串:
- 它是一个可变的字符序列
append会添加内容,并支持链式调用- 非常适合在循环中构建文本
- 调用
toString()获取最终的String - 设置初始容量可以避免调整大小
常见问题解答
「使用 StringBuilder 构建字符串」课时是免费的吗?
是的 — 「使用 StringBuilder 构建字符串」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Java Academy 课程的其余内容,请升级到 CoddyKit PRO。 Java Academy 课程共包含 4 节课。
「使用 StringBuilder 构建字符串」这节课中我会学到什么?
高效拼接 你通过在浏览器中直接运行的动手代码来练习 Java Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Java Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Java Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「使用 StringBuilder 构建字符串」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Java Academy 课中编写并运行代码吗?
能。每节 Java Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 字符串为何不可变
- 使用 StringBuilder 构建字符串
- StringBuilder 方法
- StringBuilder 与 StringBuffer