gpt4 book ai didi

Java char数组到String而不创建新对象

转载 作者:行者123 更新时间:2023-12-04 07:25:49 25 4
gpt4 key购买 nike

当像这样创建一个字符串时:

String s1 = “ABC”

如果“ABC”存在,JVM 将在字符串池中查找,只有当“ABC”不存在时才创建一个新对象。

所以用法

String s1 = new String("ABC")

停止此行为并每次都会创建一个对象。

现在我在将 char 数组转换为 String 时遇到问题:

private char[] names;
...
@Override
public String toString() {
return new String(this.names);
}

这将始终创建一个新对象。我可以从 char 数组转换为 String 而无需每次都创建一个新对象吗?

最佳答案

我知道没有办法避免在你的 toString() 中创建一个 String 对象,但是你可以避免保留这些新字符串(除了第一个之外的所有字符串都符合条件用于方法执行后的 GC)通过显式调用 String.intern():

@Override
public String toString() {
return new String(this.names).intern();
}

您可以通过反复检查 myObject.toString() == myObject.toString() 来测试它。

但在这样做之前,请帮自己一个忙 be aware of what you're doing .生成字符串对象可能是更好的选择,具体取决于您这样做的主要原因。

关于Java char数组到String而不创建新对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68223952/

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