Java字符串参数化

时间:2013-04-07 00:26:08

标签: java string concatenation string-concatenation parameterized

在我的一个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
}

我无法帮助,但觉得这不是在创建的String中具有“参数”的最佳方法,因为非参数文本总是相同的。但是,据我所知,使用String.format或类似插件来插入这些参数实际上效率会低于简单连接。

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

4 个答案:

答案 0 :(得分:0)

  

据我所知,使用String.format或类似插件   参数实际上比简单连接效率低。

你有什么证据支持这个?为什么你认为根据你的应用程序正在做的其他事情值得担心?听起来像是对我的微观优化。

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

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

在使用StringBufferStringBuilder阅读单线和超高效难以阅读的代码之间进行权衡。因此,我认为这个问题没有普遍的答案。取决于什么质量对您更有价值(可读性 - >可维护性或性能),被调用的次数,它是否真的成为您应用程序中的瓶颈等。

这里很好summarization

答案 3 :(得分:-1)

请勿尝试优化此操作,而不是使用String.formatStringBuilder.append而不是使用字符串连接+(尤其是在循环中)。