gpt4 book ai didi

java - 有字符串时为什么要使用 StringBuilder?

转载 作者:IT老高 更新时间:2023-10-28 11:49:56 32 4
gpt4 key购买 nike

我第一次遇到 StringBuilder 并感到惊讶,因为 Java 已经有一个非常强大的 String 类允许追加。

为什么要有第二个 String 类?

在哪里可以了解有关 StringBuilder 的更多信息?

最佳答案

String 不允许追加。您在 String 上调用的每个方法都会创建一个新对象并返回它。这是因为 String 是不可变的 - 它不能改变其内部状态。

另一方面,StringBuilder 是可变的。当您调用 append(..) 时,它会更改内部 char 数组,而不是创建一个新的字符串对象。

因此更高效的是:

StringBuilder sb = new StringBuilder();
for (int i = 0; i < 500; i ++) {
sb.append(i);
}

而不是 str += i,它会创建 500 个新的字符串对象。

请注意,在示例中我使用了循环。正如 helios 在评论中指出的那样,编译器会自动将像 String d = a + b + c 这样的表达式转换为像

这样的表达式
String d = new StringBuilder(a).append(b).append(c).toString();

还要注意,除了 StringBuilder 之外还有 StringBuffer。不同的是前者有同步方法。如果将其用作局部变量,请使用 StringBuilder。如果碰巧它可能被多个线程访问,请使用 StringBuffer (这种情况很少见)

关于java - 有字符串时为什么要使用 StringBuilder?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234147/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com