0

在我的一个 java 工具中,我重复创建了一些字符串,其中包含的变量如下所示:

for (String value : values) {
    // unrelated code omitted for clarity
    String outputValue = "blah blah blah " + foo + " blah " + bar + " blah";
    // code that writes out the created outputValue
}

我不禁觉得这不是在 created 某种意义上拥有“参数”的最佳方法String,因为非参数文本总是相同的。但是,据我了解,使用String.format或类似方式插入这些参数实际上比简单的串联效率低。

创建这些参数化字符串是否有更好/更有效(相对于时间而不是内存)的方法?

4

4 回答 4

0

据我了解,使用 String.format 或类似方法插入这些参数实际上比简单的连接效率低。

你有什么证据支持这一点?鉴于您的应用程序正在做的所有其他事情,您为什么认为值得担心呢?对我来说听起来像是一个微优化。

如果您的需求广泛,我会推荐任何模板解决方案,例如 Velocity。

于 2013-04-07T00:28:05.620 回答
0

最有效的方法可能是使用 StringBuilder。

StringBuilder builder = new StringBuilder("blah blah blah");
builder.append(yourvalue).append("blah");

StringBuilder 允许的是避免多个昂贵的字符串连接。当您最终完成时,您只需调用builder.toString()以获取最终的字符串。

于 2013-04-07T00:31:51.840 回答
0

StringBuffer使用or来阅读单行代码和超高效难以阅读的代码之间需要权衡取舍StringBuilder。所以我认为这个问题没有普遍的答案。取决于什么质量对您更有价值(可读性 -> 可维护性或性能),它被调用多少次,它是否真的是您应用程序的瓶颈等。

这是很好的总结

于 2013-04-07T00:34:38.767 回答
-1

String.format除了使用或StringBuilder.append代替带有 + 的字符串连接(尤其是在循环中)之外,不要尝试对此进行优化。

于 2013-04-07T00:36:13.330 回答