=0;--6ren">
gpt4 book ai didi

java - 弦乐与表演

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:15:41 24 4
gpt4 key购买 nike

我有一个这样的 for 循环:

    String myString = "123456789";
String prefix = null;
for (int i=6;i>=0;--i)
{
prefix = myString.substring(0,i);
process(prefix);
}

问题是,如果这段代码被执行N次,将会创建N*7个字符串(每次执行都会创建7个字符串——因为substring方法创建了一个新的String并且这个方法被调用了7次每次执行)。我正在考虑如何在这种情况下提高性能。我想知道是否有一种方法每次执行只使用一个字符串,每次都修改它。这就是 StringBuilder 的目的,但我认为 StringBuilder 在这种情况下没有帮助:

    String myString = "123456789";
StringBuilder prefix = new StringBuilder(myString);
for (int i=6;i>=0;--i)
{
prefix.delete(i,prefix.length());
process(prefix.toString());
}

在这种情况下,prefix 总是引用同一个 StringBuilder 对象,但同样的问题出现在另一个地方,因为 prefix.toString() 总是返回一个新的 String 对象。

有什么想法吗?

(我知道这个话题已经被处理过很多次了。但是我已经做了一些搜索,但我没有找到解决方案,也许这是内存的最小使用?)

谢谢你的帮助

最佳答案

虽然 myString.substring(0, i) 确实创建了一个新的 String 对象,但请注意,这不会复制底层字符数据。

在对这段代码做任何事情之前,我会使用分析器来验证这确实是一个瓶颈(无论是在 CPU 使用方面,还是在垃圾收集器的压力方面)。

关于java - 弦乐与表演,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7822285/

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