字符串循环拼接,不能用 + 连接, 需要用 StringBuilder 代替
使用 + 操作符拼接字符串的问题:
String str = "start";
for (int i = 0; i < 100; i++) {
str = str + "hello";
}
每次执行 str = str + "hello"; 这行代码时,实际上是在创建一个新的 String 对象。这是因为 String 在 Java 中是不可变的,这意味着每次你“改变”一个 String 的值时,实际上是创建了一个新的 String 实例。随着循环次数的增加,这种操作会显著增加内存消耗和垃圾回收的负担,因为每次迭代都会生成一个新的临时对象。
用 StringBuilder 代替+
//重点
StringBuilder stringBuilder = new StringBuilder("start");
for (int i = 0; i < 100; i++) {
stringBuilder.append("hello");
}
String result = stringBuilder.toString();
首先创建了一个 StringBuilder 实例并初始化为 "start"。然后,在循环中,我们调用 append() 方法来追加 "hello" 字符串。这不会创建新的字符串实例,而是直接在现有的 StringBuilder 实例上进行修改。最后,我们可以调用 toString() 方法将 StringBuilder 转换回一个普通的 String 对象。
这样做可以大幅减少内存使用和提高程序性能,特别是在需要大量字符串拼接的场景下。因此,对于频繁的字符串拼接操作,推荐使用 StringBuilder 或者其线程安全版本 StringBuffer。