gpt4 book ai didi

java - StringBuilder 或 StringBuffer 的 toString() 方法会创建一个新的不可变字符串吗?

转载 作者:搜寻专家 更新时间:2023-11-01 01:04:42 24 4
gpt4 key购买 nike

正如我们所知,java 字符串是不可变的,要创建可变字符串,我们可以使用 StringBufferStringBuilder。现在,如果我们在 StringBuilder 对象中有一个 String,并且我们使用它的 toString() 方法,那么会在 String 池中创建另一个不可变的 String。如果是这样,那么如何避免这种情况。

最佳答案

Now if we have a String in a StringBuilder object and we use the toString() method of it, will that create another immutable String in the String pool

StringBuilder 中没有String。字符存储在 char[] 中,当您调用 toString() 时,会创建一个新的 String:

public String toString() {
// Create a copy, don't share the array
return new String(value, 0, count);
}

也就是说,创建一个新的 String 不会将其添加到 String 池中,因此您无需避免任何事情。

our main purpose of using StringBuilder is to avoid immutable Strings

这不准确。主要目的是避免由于多个 String 连接而创建多个 String。使用 StringBuilder 允许您使用单个 StringBuilder 实例执行所有连接。如果您想要 StringBuilder 内容的 String 表示,您无法避免创建一个 String 实例。但是,您不必创建 StringBuilder 内容的 String 表示(除非您需要将其传递给需要 String 的方法>).

关于java - StringBuilder 或 StringBuffer 的 toString() 方法会创建一个新的不可变字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50112286/

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